#include "modbustcp_class.h"

ModbusTCP_Class* ModbusTCP_Class::m_instance = nullptr;
QMutex ModbusTCP_Class::m_mutex;
ModbusTCP_Class *ModbusTCP_Class::getInstance()
{
    if(!m_instance)
    {
        QMutexLocker locker(&m_mutex);
        if(!m_instance)
        {
            m_instance = new ModbusTCP_Class();
        }
    }
    return m_instance;
}

void ModbusTCP_Class::floatResolution(QString setValue, uint16_t *high, uint16_t *low)
{
    float test = setValue.toFloat();

    // qDebug()<<"当前需要转换的数据为:  "<<test;

    uint8_t midValue [4] = {0};

    memcpy(midValue,&test,sizeof(float));   // 可用

    uint16_t midValue01[2] = {0};

    // qDebug()<<"8-高位: " <<midValue[3];
    // qDebug()<<"8-低位: " <<midValue[2];
    // qDebug()<<"8-次低位: " <<midValue[1];
    // qDebug()<<"8-低位: " <<midValue[0];

    midValue01[0] = (midValue[3] << 8| midValue[2]);
    midValue01[1] = (midValue[1] << 8| midValue[0]);

    // qDebug()<<"16-高位"<<midValue01[0];
    // qDebug()<<"16-低位"<<midValue01[1];

    *high = midValue01[0];
    *low = midValue01[1];
}

float ModbusTCP_Class::combinationToFloat(quint16 valueH, quint16 valueL)
{
    float result = 0;

    uint32_t midValue = (static_cast<uint32_t>(valueH) << 16) | static_cast<uint32_t>(valueL);

    result = *(float*)&midValue;

    return result;
}

void ModbusTCP_Class::write_into_tcp_Hold32(int addr, QString value)
{
    uint16_t write_regs[2] = {0};

    floatResolution(value,&write_regs[0],&write_regs[1]);

    if (m_PLC->state() != QModbusDevice::ConnectedState) {
        qDebug()<<"error : disConnectedState";
        return;
    }
    //写入到 holdaddress 地址    写两个寄存器
    QModbusDataUnit writeUnit(QModbusDataUnit::HoldingRegisters, (addr/2), 2);
    writeUnit.setValue(0,write_regs[0]);
    writeUnit.setValue(1,write_regs[1]);

    // 发送写请求  // 1为从站地址
    if (QModbusReply* reply = m_PLC->sendWriteRequest(writeUnit, 1))
    {
        if (!reply->isFinished())
        {
            QObject::connect(reply, &QModbusReply::finished, this,[this ,reply, addr, value]()
            {
                if (reply->error() != QModbusDevice::NoError)
                {
                    qDebug() << "写入 保持寄存器32 失败:" <<"  地址 : "<<addr<<"  写入值: "<<value<<"  "<< reply->error();
                } else
                {
                    qDebug() << "写入 保持寄存器32 成功"<<"  地址 : "<<addr<<"  写入值: "<<value;
                    emit write_PLC_Successed(addr);
                }
                reply->deleteLater();
            });
        } else {
            reply->deleteLater();
        }
    } else {
        qDebug() << "发送 写入保持寄存器32 请求失败" <<"  地址 : "<<addr<<"  写入值: "<<value;
    }
}

void ModbusTCP_Class::write_into_tcp_Hold16(int addr, QString newValue)
{
    qDebug()<<"地址: "<<addr<<" 写入值: "<<newValue;
    QTimer::singleShot(10, this, [this, addr, newValue]() {

        uint16_t value = newValue.toUShort();

        QModbusDataUnit writeUnit(QModbusDataUnit::HoldingRegisters,(addr / 2),1);

        writeUnit.setValue(0,value);

        if(auto* reply = m_PLC->sendWriteRequest(writeUnit,1))
        {
            if(!reply->isFinished())
            {
                connect(reply,&QModbusReply::finished,this,[reply]()
                {
                    if(reply->error() == QModbusDevice::NoError)
                    {
                        qDebug()<<"写入寄存器成功";
                    }
                    else
                    {
                        qDebug()<<"写入寄存器失败"<<reply->errorString();
                    }

                    reply->deleteLater();
                });
            }

            reply->deleteLater();
        }
    });
}

void ModbusTCP_Class::write_into_tcp_Coil(int addr, bool value)
{
    // uint16_t value = value.toUShort();

    QModbusDataUnit writeUnit(QModbusDataUnit::Coils,addr,1);

    writeUnit.setValue(0,value);

    // 发送写请求
    if (QModbusReply* reply = m_PLC->sendWriteRequest(writeUnit, 1))
    {
        if (!reply->isFinished())
        {
            QObject::connect(reply, &QModbusReply::finished, [reply, addr, value]()
            {
                if (reply->error() != QModbusDevice::NoError)
                {
                    qDebug() << "写入 线圈 失败:" << reply->error();
                } else
                {
                    qDebug() << "写入 线圈 成功" <<"  地址: "<<addr<<" 写入值: "<<value;
                }
                reply->deleteLater();
            });
        } else {
            reply->deleteLater();
        }
    } else {
        qDebug() << "发送 写入线圈 请求失败";
    }
}

void ModbusTCP_Class::write_into_tcp_Hold_15_Parameters(const QString &process1,
                                                        const QString &process2,
                                                        const QString &fAssist1,
                                                        const QString &fAssist2,
                                                        const QString &bAssist1,
                                                        const QString &bAssist2,
                                                        const QString &fUpper1,
                                                        const QString &fUpper2,
                                                        const QString &bUpper1,
                                                        const QString &bUpper2,
                                                        const QString &fLower1,
                                                        const QString &fLower2,
                                                        const QString &bLower1,
                                                        const QString &bLower2,
                                                        const QString &roller)
{
    // const quint16 START_ADDR = 5560;  // 内部指定起始地址
    //     const int REG_COUNT = 15 * 2;    // 15个浮点数共需30个寄存器
    uint16_t write_regs[30] = {0};

    // 检查PLC连接
    if (!m_PLC || m_PLC->state() != QModbusDevice::ConnectedState) {
        qDebug() << "错误：PLC未连接";
        return;
    }

    // qDebug()<<"工进1: "<<process1;
    // qDebug()<<"工进2: "<<process2;
    // qDebug()<<"前1辅助: "<<fAssist1;
    // qDebug()<<"前2辅助: "<<fAssist2;
    // qDebug()<<"后1辅助: "<<bAssist1;
    // qDebug()<<"后2辅助: "<<bAssist2;
    // qDebug()<<"前上1: "<<fUpper1;
    // qDebug()<<"前上2: "<<fUpper2;
    // qDebug()<<"后上1: "<<bUpper1;
    // qDebug()<<"后上2: "<<bUpper2;
    // qDebug()<<"前下1: "<<fLower1;
    // qDebug()<<"前下2: "<<fLower2;
    // qDebug()<<"后下1: "<<bLower1;
    // qDebug()<<"后下2: "<<bLower2;
    // qDebug()<<"压辊: "<<roller;

    floatResolution(fUpper1,&write_regs[0],&write_regs[1]);
    floatResolution(fUpper2,&write_regs[2],&write_regs[3]);
    floatResolution(fAssist1,&write_regs[4],&write_regs[5]);
    floatResolution(fAssist2,&write_regs[6],&write_regs[7]);
    floatResolution(bUpper1,&write_regs[8],&write_regs[9]);
    floatResolution(bUpper2,&write_regs[10],&write_regs[11]);
    floatResolution(bAssist1,&write_regs[12],&write_regs[13]);
    floatResolution(bAssist2,&write_regs[14],&write_regs[15]);
    floatResolution(fLower1,&write_regs[16],&write_regs[15]);
    floatResolution(fLower2,&write_regs[18],&write_regs[17]);
    floatResolution(bLower1,&write_regs[20],&write_regs[19]);
    floatResolution(bLower2,&write_regs[22],&write_regs[23]);
    floatResolution(process1,&write_regs[24],&write_regs[25]);
    floatResolution(process2,&write_regs[26],&write_regs[27]);
    floatResolution(roller,&write_regs[28],&write_regs[29]);

    // 创建Modbus写入单元
    QModbusDataUnit writeUnit(QModbusDataUnit::HoldingRegisters, (5560/2), 30);
    for (int i = 0; i < 30; i++) {
        writeUnit.setValue(i, write_regs[i]);
    }

    // 发送写入请求
    if (QModbusReply* reply = m_PLC->sendWriteRequest(writeUnit, 1)) {  // 从站地址1
        if (!reply->isFinished()) {
            connect(reply, &QModbusReply::finished, this,
                    [this, reply]() {
                if (reply->error() != QModbusDevice::NoError) {
                    qDebug() << "写入失败: 起始地址" << 5560
                             << "错误:" << reply->errorString();
                    if (reply->error() == QModbusDevice::ProtocolError) {
                        auto modbusReply = qobject_cast<QModbusReply*>(reply);
                        if (modbusReply) {
                            qCritical() << "Modbus异常码: " << modbusReply->rawResult().exceptionCode();
                            // 异常码含义：1=非法功能，2=非法数据地址，3=非法数据值，4=从站设备故障...
                        }
                    }
                } else {
                    qDebug() << "写入成功: 起始地址" << 5560
                             << "寄存器数量" << 30;
                    // emit write15PropertiesSuccessed(START_ADDR);
                    // 使用QTimer::singleShot实现100ms延迟执行
                    QTimer::singleShot(100, this, [this]() {
                        read_Aimlocation_PM_Hold();
                    });

                }
                reply->deleteLater();
            }
            );
        } else {
            qDebug() << "写入请求异常完成";
            reply->deleteLater();
        }
    } else {
        qDebug() << "发送写入请求失败: 起始地址" << 5560;
    }
}

void ModbusTCP_Class::write_into_tcp_hold_F_Uknife_Ass_Share(const QString &value)
{
    // 检查PLC连接
    if (!m_PLC || m_PLC->state() != QModbusDevice::ConnectedState) {
        qDebug() << "错误：PLC未连接";
        return;
    }
    uint16_t write_regs[4] = {0};

    floatResolution(value,&write_regs[0],&write_regs[1]);
    floatResolution(value,&write_regs[2],&write_regs[3]);

    QModbusDataUnit writeUnit(QModbusDataUnit::HoldingRegisters, (5568/2), 4);
    for (int i = 0; i < 4; i++) {
        writeUnit.setValue(i, write_regs[i]);
    }

    // 发送写入请求
    if (QModbusReply* reply = m_PLC->sendWriteRequest(writeUnit, 1)) {  // 从站地址1
        if (!reply->isFinished()) {
            connect(reply, &QModbusReply::finished, this,
                    [this, reply]() {
                if (reply->error() != QModbusDevice::NoError) {
                    qDebug() << "写入失败: 起始地址" << 5568
                             << "错误:" << reply->errorString();
                    if (reply->error() == QModbusDevice::ProtocolError) {
                        auto modbusReply = qobject_cast<QModbusReply*>(reply);
                        if (modbusReply) {
                            qCritical() << "Modbus异常码: " << modbusReply->rawResult().exceptionCode();
                            // 异常码含义：1=非法功能，2=非法数据地址，3=非法数据值，4=从站设备故障...
                        }
                    }
                } else {
                    qDebug() << "写入成功: 起始地址" << 5568
                             << "寄存器数量" << 4;
                    // emit write15PropertiesSuccessed(START_ADDR);
                    // 使用QTimer::singleShot实现100ms延迟执行
                    QTimer::singleShot(100, this, [this]() {
                        read_Aimlocation_PM_Hold();
                    });

                }
                reply->deleteLater();
            }
            );
        } else {
            qDebug() << "写入请求异常完成";
            reply->deleteLater();
        }
    } else {
        qDebug() << "发送写入请求失败: 起始地址" << 5568;
    }

}

void ModbusTCP_Class::write_into_tcp_hold_B_Uknife_Ass_Share(const QString &value)
{
    // 检查PLC连接
    if (!m_PLC || m_PLC->state() != QModbusDevice::ConnectedState) {
        qDebug() << "错误：PLC未连接";
        return;
    }
    uint16_t write_regs[4] = {0};

    floatResolution(value,&write_regs[0],&write_regs[1]);
    floatResolution(value,&write_regs[2],&write_regs[3]);

    QModbusDataUnit writeUnit(QModbusDataUnit::HoldingRegisters, (5584/2), 4);
    for (int i = 0; i < 4; i++) {
        writeUnit.setValue(i, write_regs[i]);
    }

    // 发送写入请求
    if (QModbusReply* reply = m_PLC->sendWriteRequest(writeUnit, 1)) {  // 从站地址1
        if (!reply->isFinished()) {
            connect(reply, &QModbusReply::finished, this,
                    [this, reply]() {
                if (reply->error() != QModbusDevice::NoError) {
                    qDebug() << "写入失败: 起始地址" << 5584
                             << "错误:" << reply->errorString();
                    if (reply->error() == QModbusDevice::ProtocolError) {
                        auto modbusReply = qobject_cast<QModbusReply*>(reply);
                        if (modbusReply) {
                            qCritical() << "Modbus异常码: " << modbusReply->rawResult().exceptionCode();
                            // 异常码含义：1=非法功能，2=非法数据地址，3=非法数据值，4=从站设备故障...
                        }
                    }
                } else {
                    qDebug() << "写入成功: 起始地址" << 5584
                             << "寄存器数量" << 4;
                    // emit write15PropertiesSuccessed(START_ADDR);
                    // 使用QTimer::singleShot实现100ms延迟执行
                    QTimer::singleShot(100, this, [this]() {
                        read_Aimlocation_PM_Hold();
                    });

                }
                reply->deleteLater();
            }
            );
        } else {
            qDebug() << "写入请求异常完成";
            reply->deleteLater();
        }
    } else {
        qDebug() << "发送写入请求失败: 起始地址" << 5584;
    }
}

void ModbusTCP_Class::write_into_tcp_hold_FUpper_Knife_Share(const QString &value)
{
    // 检查PLC连接
    if (!m_PLC || m_PLC->state() != QModbusDevice::ConnectedState) {
        qDebug() << "错误：PLC未连接";
        return;
    }
    uint16_t write_regs[8] = {0};

    floatResolution(value,&write_regs[0],&write_regs[1]);
    floatResolution(value,&write_regs[2],&write_regs[3]);

    QModbusDataUnit writeUnit(QModbusDataUnit::HoldingRegisters, (5560/2), 4);
    for (int i = 0; i < 4; i++) {
        writeUnit.setValue(i, write_regs[i]);
    }

    // 发送写入请求
    if (QModbusReply* reply = m_PLC->sendWriteRequest(writeUnit, 1)) {  // 从站地址1
        if (!reply->isFinished()) {
            connect(reply, &QModbusReply::finished, this,
                    [this, reply]() {
                if (reply->error() != QModbusDevice::NoError) {
                    qDebug() << "写入失败: 起始地址" << 5560
                             << "错误:" << reply->errorString();
                    if (reply->error() == QModbusDevice::ProtocolError) {
                        auto modbusReply = qobject_cast<QModbusReply*>(reply);
                        if (modbusReply) {
                            qCritical() << "Modbus异常码: " << modbusReply->rawResult().exceptionCode();
                            // 异常码含义：1=非法功能，2=非法数据地址，3=非法数据值，4=从站设备故障...
                        }
                    }
                } else {
                    qDebug() << "写入成功: 起始地址" << 5560
                             << "寄存器数量" << 4;
                    // emit write15PropertiesSuccessed(START_ADDR);
                    // 使用QTimer::singleShot实现100ms延迟执行
                    QTimer::singleShot(100, this, [this]() {
                        read_Aimlocation_PM_Hold();
                    });

                }
                reply->deleteLater();
            }
            );
        } else {
            qDebug() << "写入请求异常完成";
            reply->deleteLater();
        }
    } else {
        qDebug() << "发送写入请求失败: 起始地址" << 5568;
    }
}

void ModbusTCP_Class::write_into_tcp_hold_BUpper_Knife_Share(const QString &value)
{
    // 检查PLC连接
    if (!m_PLC || m_PLC->state() != QModbusDevice::ConnectedState) {
        qDebug() << "错误：PLC未连接";
        return;
    }
    uint16_t write_regs[8] = {0};

    floatResolution(value,&write_regs[0],&write_regs[1]);
    floatResolution(value,&write_regs[2],&write_regs[3]);

    QModbusDataUnit writeUnit(QModbusDataUnit::HoldingRegisters, (5576/2), 4);
    for (int i = 0; i < 4; i++) {
        writeUnit.setValue(i, write_regs[i]);
    }

    // 发送写入请求
    if (QModbusReply* reply = m_PLC->sendWriteRequest(writeUnit, 1)) {  // 从站地址1
        if (!reply->isFinished()) {
            connect(reply, &QModbusReply::finished, this,
                    [this, reply]() {
                if (reply->error() != QModbusDevice::NoError) {
                    qDebug() << "写入失败: 起始地址" << 5576
                             << "错误:" << reply->errorString();
                    if (reply->error() == QModbusDevice::ProtocolError) {
                        auto modbusReply = qobject_cast<QModbusReply*>(reply);
                        if (modbusReply) {
                            qCritical() << "Modbus异常码: " << modbusReply->rawResult().exceptionCode();
                            // 异常码含义：1=非法功能，2=非法数据地址，3=非法数据值，4=从站设备故障...
                        }
                    }
                } else {
                    qDebug() << "写入成功: 起始地址" << 5576
                             << "寄存器数量" << 4;
                    // emit write15PropertiesSuccessed(START_ADDR);
                    // 使用QTimer::singleShot实现100ms延迟执行
                    QTimer::singleShot(100, this, [this]() {
                        read_Aimlocation_PM_Hold();
                    });

                }
                reply->deleteLater();
            }
            );
        } else {
            qDebug() << "写入请求异常完成";
            reply->deleteLater();
        }
    } else {
        qDebug() << "发送写入请求失败: 起始地址" << 5576;
    }
}

void ModbusTCP_Class::write_into_tcp_hold_BLower_Knife_Share(const QString &value)
{
    // 检查PLC连接
    if (!m_PLC || m_PLC->state() != QModbusDevice::ConnectedState) {
        qDebug() << "错误：PLC未连接";
        return;
    }
    uint16_t write_regs[8] = {0};

    floatResolution(value,&write_regs[0],&write_regs[1]);
    floatResolution(value,&write_regs[2],&write_regs[3]);

    QModbusDataUnit writeUnit(QModbusDataUnit::HoldingRegisters, (5600/2), 4);
    for (int i = 0; i < 4; i++) {
        writeUnit.setValue(i, write_regs[i]);
    }

    // 发送写入请求
    if (QModbusReply* reply = m_PLC->sendWriteRequest(writeUnit, 1)) {  // 从站地址1
        if (!reply->isFinished()) {
            connect(reply, &QModbusReply::finished, this,
                    [this, reply]() {
                if (reply->error() != QModbusDevice::NoError) {
                    qDebug() << "写入失败: 起始地址" << 5592
                             << "错误:" << reply->errorString();
                    if (reply->error() == QModbusDevice::ProtocolError) {
                        auto modbusReply = qobject_cast<QModbusReply*>(reply);
                        if (modbusReply) {
                            qCritical() << "Modbus异常码: " << modbusReply->rawResult().exceptionCode();
                            // 异常码含义：1=非法功能，2=非法数据地址，3=非法数据值，4=从站设备故障...
                        }
                    }
                } else {
                    qDebug() << "写入成功: 起始地址" << 5592
                             << "寄存器数量" << 4;
                    // emit write15PropertiesSuccessed(START_ADDR);
                    // 使用QTimer::singleShot实现100ms延迟执行
                    QTimer::singleShot(100, this, [this]() {
                        read_Aimlocation_PM_Hold();
                    });

                }
                reply->deleteLater();
            }
            );
        } else {
            qDebug() << "写入请求异常完成";
            reply->deleteLater();
        }
    } else {
        qDebug() << "发送写入请求失败: 起始地址" << 5592;
    }
}

void ModbusTCP_Class::write_into_tcp_hold_FLower_Knife_Share(const QString &value)
{
    // 检查PLC连接
    if (!m_PLC || m_PLC->state() != QModbusDevice::ConnectedState) {
        qDebug() << "错误：PLC未连接";
        return;
    }
    uint16_t write_regs[4] = {0};

    floatResolution(value,&write_regs[0],&write_regs[1]);
    floatResolution(value,&write_regs[2],&write_regs[3]);

    QModbusDataUnit writeUnit(QModbusDataUnit::HoldingRegisters, (5592/2), 4);
    for (int i = 0; i < 4; i++) {
        writeUnit.setValue(i, write_regs[i]);
    }

    // 发送写入请求
    if (QModbusReply* reply = m_PLC->sendWriteRequest(writeUnit, 1)) {  // 从站地址1
        if (!reply->isFinished()) {
            connect(reply, &QModbusReply::finished, this,
                    [this, reply]() {
                if (reply->error() != QModbusDevice::NoError) {
                    qDebug() << "写入失败: 起始地址" << 5600
                             << "错误:" << reply->errorString();
                    if (reply->error() == QModbusDevice::ProtocolError) {
                        auto modbusReply = qobject_cast<QModbusReply*>(reply);
                        if (modbusReply) {
                            qCritical() << "Modbus异常码: " << modbusReply->rawResult().exceptionCode();
                            // 异常码含义：1=非法功能，2=非法数据地址，3=非法数据值，4=从站设备故障...
                        }
                    }
                } else {
                    qDebug() << "写入成功: 起始地址" << 5600
                             << "寄存器数量" << 4;
                    // emit write15PropertiesSuccessed(START_ADDR);
                    // 使用QTimer::singleShot实现100ms延迟执行
                    QTimer::singleShot(100, this, [this]() {
                        read_Aimlocation_PM_Hold();
                    });

                }
                reply->deleteLater();
            }
            );
        } else {
            qDebug() << "写入请求异常完成";
            reply->deleteLater();
        }
    } else {
        qDebug() << "发送写入请求失败: 起始地址" << 5600;
    }
}

void ModbusTCP_Class::read_CurrentLocation_AimLocation_PointMove_Torque_Hold()
{
    QModbusDataUnit readUnit1(QModbusDataUnit::HoldingRegisters,(5500/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit1,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    setFU_knife_1_CurrLoc(QString("%1").arg(combinationToFloat(resultUnit.value(0),resultUnit.value(1)),0,'f',1));
                    setFU_knife_2_CurrLoc(QString("%1").arg(combinationToFloat(resultUnit.value(2),resultUnit.value(3)),0,'f',1));
                    setFU_knife_1_A_E_CurrLoc(QString("%1").arg(combinationToFloat(resultUnit.value(4),resultUnit.value(5)),0,'f',1));
                    setFU_knife_2_A_E_CurrLoc(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setBU_knife_1_CurrLoc(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    setBU_knife_2_CurrLoc(QString("%1").arg(combinationToFloat(resultUnit.value(10),resultUnit.value(11)),0,'f',1));
                    setBU_knife_1_A_E_CurrLoc(QString("%1").arg(combinationToFloat(resultUnit.value(12),resultUnit.value(13)),0,'f',1));
                    setBU_knife_2_A_E_CurrLoc(QString("%1").arg(combinationToFloat(resultUnit.value(14),resultUnit.value(15)),0,'f',1));
                    setFD_knife_1_CurrLoc(QString("%1").arg(combinationToFloat(resultUnit.value(16),resultUnit.value(17)),0,'f',1));
                    setFD_knife_2_CurrLoc(QString("%1").arg(combinationToFloat(resultUnit.value(18),resultUnit.value(19)),0,'f',1));
                    setBD_knife_1_CurrLoc(QString("%1").arg(combinationToFloat(resultUnit.value(20),resultUnit.value(21)),0,'f',1));
                    setBD_knife_2_CurrLoc(QString("%1").arg(combinationToFloat(resultUnit.value(22),resultUnit.value(23)),0,'f',1));
                    setEntry_1_CurrLoc(QString("%1").arg(combinationToFloat(resultUnit.value(24),resultUnit.value(25)),0,'f',1));
                    setEntry_2_CurrLoc(QString("%1").arg(combinationToFloat(resultUnit.value(26),resultUnit.value(27)),0,'f',1));
                    setIdler_CurrLoc(QString("%1").arg(combinationToFloat(resultUnit.value(28),resultUnit.value(29)),0,'f',1));

                    // setFU_knife_1_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(30),resultUnit.value(31)),0,'f',1));
                    // setFU_knife_2_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(32),resultUnit.value(33)),0,'f',1));
                    // setFU_knife_1_A_E_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(34),resultUnit.value(35)),0,'f',1));
                    // setFU_knife_2_A_E_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(36),resultUnit.value(37)),0,'f',1));
                    // setBU_knife_1_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(38),resultUnit.value(39)),0,'f',1));
                    // setBU_knife_2_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(40),resultUnit.value(41)),0,'f',1));
                    // setBU_knife_1_A_E_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(42),resultUnit.value(43)),0,'f',1));
                    // setBU_knife_2_A_E_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(44),resultUnit.value(45)),0,'f',1));
                    // setFD_knife_1_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(46),resultUnit.value(47)),0,'f',1));
                    // setFD_knife_2_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(48),resultUnit.value(49)),0,'f',1));
                    // setBD_knife_1_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(50),resultUnit.value(51)),0,'f',1));
                    // setBD_knife_2_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(52),resultUnit.value(53)),0,'f',1));
                    // setEntry_1_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(54),resultUnit.value(55)),0,'f',1));
                    // setEntry_2_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(56),resultUnit.value(57)),0,'f',1));
                    // setIdler_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(58),resultUnit.value(59)),0,'f',1));

                    // setFU_knife_1_PM(QString("%1").arg(combinationToFloat(resultUnit.value(60),resultUnit.value(61)),0,'f',1));
                    // setFU_knife_2_PM(QString("%1").arg(combinationToFloat(resultUnit.value(62),resultUnit.value(63)),0,'f',1));
                    // setFU_knife_1_A_E_PM(QString("%1").arg(combinationToFloat(resultUnit.value(64),resultUnit.value(65)),0,'f',1));
                    // setFU_knife_2_A_E_PM(QString("%1").arg(combinationToFloat(resultUnit.value(66),resultUnit.value(67)),0,'f',1));
                    // setBU_knife_1_PM(QString("%1").arg(combinationToFloat(resultUnit.value(68),resultUnit.value(69)),0,'f',1));
                    // setBU_knife_2_PM(QString("%1").arg(combinationToFloat(resultUnit.value(70),resultUnit.value(71)),0,'f',1));
                    // setBU_knife_1_A_E_PM(QString("%1").arg(combinationToFloat(resultUnit.value(72),resultUnit.value(73)),0,'f',1));
                    // setBU_knife_2_A_E_PM(QString("%1").arg(combinationToFloat(resultUnit.value(74),resultUnit.value(75)),0,'f',1));
                    // setFD_knife_1_PM(QString("%1").arg(combinationToFloat(resultUnit.value(76),resultUnit.value(77)),0,'f',1));
                    // setFD_knife_2_PM(QString("%1").arg(combinationToFloat(resultUnit.value(78),resultUnit.value(79)),0,'f',1));
                    // setBD_knife_1_PM(QString("%1").arg(combinationToFloat(resultUnit.value(80),resultUnit.value(81)),0,'f',1));
                    // setBD_knife_2_PM(QString("%1").arg(combinationToFloat(resultUnit.value(82),resultUnit.value(83)),0,'f',1));
                    // setEntry_1_PM(QString("%1").arg(combinationToFloat(resultUnit.value(84),resultUnit.value(85)),0,'f',1));
                    // setEntry_2_PM(QString("%1").arg(combinationToFloat(resultUnit.value(86),resultUnit.value(87)),0,'f',1));
                    // setIdler_PM(QString("%1").arg(combinationToFloat(resultUnit.value(88),resultUnit.value(89)),0,'f',1));

                    // setFU_knife_1_TQ(QString("%1").arg(combinationToFloat(resultUnit.value(90),resultUnit.value(91)),0,'f',1));
                    // setFU_knife_2_TQ(QString("%1").arg(combinationToFloat(resultUnit.value(92),resultUnit.value(93)),0,'f',1));
                    // setFU_knife_1_A_E_TQ(QString("%1").arg(combinationToFloat(resultUnit.value(94),resultUnit.value(95)),0,'f',1));
                    // setFU_knife_2_A_E_TQ(QString("%1").arg(combinationToFloat(resultUnit.value(96),resultUnit.value(97)),0,'f',1));
                    // setBU_knife_1_TQ(QString("%1").arg(combinationToFloat(resultUnit.value(98),resultUnit.value(99)),0,'f',1));
                    // setBU_knife_2_TQ(QString("%1").arg(combinationToFloat(resultUnit.value(100),resultUnit.value(101)),0,'f',1));
                    // setBU_knife_1_A_E_TQ(QString("%1").arg(combinationToFloat(resultUnit.value(102),resultUnit.value(103)),0,'f',1));
                    // setBU_knife_2_A_E_TQ(QString("%1").arg(combinationToFloat(resultUnit.value(104),resultUnit.value(105)),0,'f',1));
                    // setFD_knife_1_TQ(QString("%1").arg(combinationToFloat(resultUnit.value(106),resultUnit.value(107)),0,'f',1));
                    // setFD_knife_2_TQ(QString("%1").arg(combinationToFloat(resultUnit.value(108),resultUnit.value(109)),0,'f',1));
                    // setBD_knife_1_TQ(QString("%1").arg(combinationToFloat(resultUnit.value(110),resultUnit.value(111)),0,'f',1));
                    // setBD_knife_2_TQ(QString("%1").arg(combinationToFloat(resultUnit.value(112),resultUnit.value(113)),0,'f',1));
                    // setEntry_1_TQ(QString("%1").arg(combinationToFloat(resultUnit.value(114),resultUnit.value(115)),0,'f',1));
                    // setEntry_2_TQ(QString("%1").arg(combinationToFloat(resultUnit.value(116),resultUnit.value(117)),0,'f',1));
                    // setIdler_TQ(QString("%1").arg(combinationToFloat(resultUnit.value(118),resultUnit.value(119)),0,'f',1));

                }
            });
        }
    }
}

void ModbusTCP_Class::enter_SetZero_Window()
{
    read_FU_knife_1_Zero_Hold();
}

void ModbusTCP_Class::read_FU_knife_1_Zero_Hold()
{
    QModbusDataUnit readUnit1(QModbusDataUnit::HoldingRegisters,(4000/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit1,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 前上刀1辅工
                    setFU_knife_1_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setFU_knife_1_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    read_FU_knife_2_Zero_Hold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_FU_knife_2_Zero_Hold()
{
    QModbusDataUnit readUnit2(QModbusDataUnit::HoldingRegisters,(4100/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit2,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 前上刀2辅工

                    setFU_knife_2_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setFU_knife_2_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));

                    read_BU_knife_1_Zero_Hold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_BU_knife_1_Zero_Hold()
{
    QModbusDataUnit readUnit3(QModbusDataUnit::HoldingRegisters,(4400/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit3,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 后上刀1
                    setBU_knife_1_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setBU_knife_1_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    read_BU_knife_2_Zero_Hold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_BU_knife_2_Zero_Hold()
{
    QModbusDataUnit readUnit4(QModbusDataUnit::HoldingRegisters,(4500/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit4,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 后上刀1

                    setBU_knife_2_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setBU_knife_2_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));

                    read_FD_knife_1_Zero_Hold();

                }
            });
        }
    }
}

void ModbusTCP_Class::read_FD_knife_1_Zero_Hold()
{
    QModbusDataUnit readUnit5(QModbusDataUnit::HoldingRegisters,(4800/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit5,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 后上刀1

                    setFD_knife_1_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setFD_knife_1_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    read_FD_knife_2_Zero_Hold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_FD_knife_2_Zero_Hold()
{
    QModbusDataUnit readUnit6(QModbusDataUnit::HoldingRegisters,(4900/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit6,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 后上刀1

                    setFD_knife_2_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setFD_knife_2_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    read_BD_knife_1_Zero_Hold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_BD_knife_1_Zero_Hold()
{
    QModbusDataUnit readUnit7(QModbusDataUnit::HoldingRegisters,(5000/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit7,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 后上刀1

                    setBD_knife_1_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setBD_knife_1_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    read_BD_knife_2_Zero_Hold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_BD_knife_2_Zero_Hold()
{
    QModbusDataUnit readUnit8(QModbusDataUnit::HoldingRegisters,(5100/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit8,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 后上刀1

                    setBD_knife_2_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setBD_knife_2_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    read_FU_knife_1_A_E_Zero_Hold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_FU_knife_1_A_E_Zero_Hold()
{
    QModbusDataUnit readUnit1(QModbusDataUnit::HoldingRegisters,(4200/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit1,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 前上刀1辅工

                    setFU_knife_1_A_E_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setFU_knife_1_A_E_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    read_FU_knife_2_A_E_Zero_Hold();
                }
            });
        }
    }

}

void ModbusTCP_Class::read_FU_knife_2_A_E_Zero_Hold()
{
    QModbusDataUnit readUnit2(QModbusDataUnit::HoldingRegisters,(4300/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit2,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 前上刀2辅工

                    setFU_knife_2_A_E_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setFU_knife_2_A_E_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    read_BU_knife_1_A_E_Zero_Hold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_BU_knife_1_A_E_Zero_Hold()
{
    QModbusDataUnit readUnit3(QModbusDataUnit::HoldingRegisters,(4600/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit3,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 后上刀1辅工

                    setBU_knife_1_A_E_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setBU_knife_1_A_E_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    read_BU_knife_2_A_E_Zero_Hold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_BU_knife_2_A_E_Zero_Hold()
{
    QModbusDataUnit readUnit4(QModbusDataUnit::HoldingRegisters,(4700/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit4,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 后上刀2辅工

                    setBU_knife_2_A_E_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setBU_knife_2_A_E_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    read_Entry_1_Zero_Hold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_Entry_1_Zero_Hold()
{
    QModbusDataUnit readUnit5(QModbusDataUnit::HoldingRegisters,(5200/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit5,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 工进1

                    setEntry_1_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setEntry_1_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    read_Entry_2_Zero_Hold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_Entry_2_Zero_Hold()
{
    QModbusDataUnit readUnit6(QModbusDataUnit::HoldingRegisters,(5300/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit6,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 工进2

                    setEntry_2_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setEntry_2_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    read_Idler_Zero_Hold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_Idler_Zero_Hold()
{
    QModbusDataUnit readUnit1(QModbusDataUnit::HoldingRegisters,(5400/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit1,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 后上刀1

                    setIdler_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setIdler_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    read_15Axis_PM_Hold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_15Axis_PM_Hold()
{
    QModbusDataUnit readUnit1(QModbusDataUnit::HoldingRegisters,(5500/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit1,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    setFU_knife_1_PM(QString("%1").arg(combinationToFloat(resultUnit.value(60),resultUnit.value(61)),0,'f',1));
                    setFU_knife_2_PM(QString("%1").arg(combinationToFloat(resultUnit.value(62),resultUnit.value(63)),0,'f',1));
                    setFU_knife_1_A_E_PM(QString("%1").arg(combinationToFloat(resultUnit.value(64),resultUnit.value(65)),0,'f',1));
                    setFU_knife_2_A_E_PM(QString("%1").arg(combinationToFloat(resultUnit.value(66),resultUnit.value(67)),0,'f',1));
                    setBU_knife_1_PM(QString("%1").arg(combinationToFloat(resultUnit.value(68),resultUnit.value(69)),0,'f',1));
                    setBU_knife_2_PM(QString("%1").arg(combinationToFloat(resultUnit.value(70),resultUnit.value(71)),0,'f',1));
                    setBU_knife_1_A_E_PM(QString("%1").arg(combinationToFloat(resultUnit.value(72),resultUnit.value(73)),0,'f',1));
                    setBU_knife_2_A_E_PM(QString("%1").arg(combinationToFloat(resultUnit.value(74),resultUnit.value(75)),0,'f',1));
                    setFD_knife_1_PM(QString("%1").arg(combinationToFloat(resultUnit.value(76),resultUnit.value(77)),0,'f',1));
                    setFD_knife_2_PM(QString("%1").arg(combinationToFloat(resultUnit.value(78),resultUnit.value(79)),0,'f',1));
                    setBD_knife_1_PM(QString("%1").arg(combinationToFloat(resultUnit.value(80),resultUnit.value(81)),0,'f',1));
                    setBD_knife_2_PM(QString("%1").arg(combinationToFloat(resultUnit.value(82),resultUnit.value(83)),0,'f',1));
                    setEntry_1_PM(QString("%1").arg(combinationToFloat(resultUnit.value(84),resultUnit.value(85)),0,'f',1));
                    setEntry_2_PM(QString("%1").arg(combinationToFloat(resultUnit.value(86),resultUnit.value(87)),0,'f',1));
                    setIdler_PM(QString("%1").arg(combinationToFloat(resultUnit.value(88),resultUnit.value(89)),0,'f',1));
                }
            });
        }
    }
}

void ModbusTCP_Class::read_Location_Forbid_Signal_Hold()
{
    QModbusDataUnit readUnit1(QModbusDataUnit::HoldingRegisters,(6180/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit1,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // qDebug()<<"前1定位禁止 : "<<resultUnit.value(0);
                    setF_1_Location_Forbid(resultUnit.value(0));
                    // qDebug()<<"前2定位禁止 : "<<resultUnit.value(1);
                    setF_2_Location_Forbid(resultUnit.value(1));
                    // qDebug()<<"后1定位禁止 : "<<resultUnit.value(2);
                    setB_1_Location_Forbid(resultUnit.value(2));
                    // qDebug()<<"后2定位禁止 : "<<resultUnit.value(3);
                    setB_2_Location_Forbid(resultUnit.value(3));
                }
            });
        }
    }
}

void ModbusTCP_Class::read_Mechine_states_Warning_signal_Hold()
{
    QModbusDataUnit readUnit1(QModbusDataUnit::HoldingRegisters,(6000/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit1,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();

                    // qDebug()<<"前上1刀 - 定位中: "<<resultUnit.value(0);
                    setFU1_location_state(resultUnit.value(0));
                    // qDebug()<<"前上2刀 - 定位中: "<<resultUnit.value(1);
                    setFU2_location_state(resultUnit.value(1));
                    // qDebug()<<"前上1刀辅助 - 定位中: "<<resultUnit.value(2);
                    setFU1_AE_location_state(resultUnit.value(2));
                    // qDebug()<<"前上2刀辅助 - 定位中: "<<resultUnit.value(3);
                    setFU2_AE_location_state(resultUnit.value(3));
                    // qDebug()<<"后上1刀 - 定位中: "<<resultUnit.value(4);
                    setBU1_location_state(resultUnit.value(4));
                    // qDebug()<<"后上2刀 - 定位中: "<<resultUnit.value(5);
                    setBU2_location_state(resultUnit.value(5));
                    // qDebug()<<"后上1刀辅助 - 定位中: "<<resultUnit.value(6);
                    setBU1_AE_location_state(resultUnit.value(6));
                    // qDebug()<<"后上2刀辅助 - 定位中: "<<resultUnit.value(7);
                    setBU2_AE_location_state(resultUnit.value(7));
                    // qDebug()<<"前下1刀 - 定位中: "<<resultUnit.value(8);
                    setFD1_location_state(resultUnit.value(8));
                    // qDebug()<<"前下2刀 - 定位中: "<<resultUnit.value(9);
                    setFD2_location_state(resultUnit.value(9));
                    // qDebug()<<"后下1刀 - 定位中: "<<resultUnit.value(10);
                    setBD1_location_state(resultUnit.value(10));
                    // qDebug()<<"后下2刀 - 定位中: "<<resultUnit.value(11);
                    setBD2_location_state(resultUnit.value(11));
                    // qDebug()<<"工进1 - 定位中: "<<resultUnit.value(12);
                    setEntry1_location_state(resultUnit.value(12));
                    // qDebug()<<"工进2 - 定位中: "<<resultUnit.value(13);
                    setEntry2_location_state(resultUnit.value(13));
                    // qDebug()<<"压辊 - 定位中: "<<resultUnit.value(14);
                    setIdler_location_state(resultUnit.value(14));

                    // qDebug()<<"前上1刀 - 报警: "<<resultUnit.value(20);
                    setFU1_warning_state(resultUnit.value(20));
                    // qDebug()<<"前上2刀 - 报警: "<<resultUnit.value(21);
                    setFU2_warning_state(resultUnit.value(21));
                    // qDebug()<<"前上1刀辅助 - 报警: "<<resultUnit.value(22);
                    setFU1_AE_warning_state(resultUnit.value(22));
                    // qDebug()<<"前上2刀辅助 - 报警: "<<resultUnit.value(23);
                    setFU2_AE_warning_state(resultUnit.value(23));
                    // qDebug()<<"后上1刀 - 报警: "<<resultUnit.value(24);
                    setBU1_warning_state(resultUnit.value(24));
                    // qDebug()<<"后上2刀 - 报警: "<<resultUnit.value(25);
                    setBU2_warning_state(resultUnit.value(25));
                    // qDebug()<<"后上1刀辅助 - 报警: "<<resultUnit.value(26);
                    setBU1_AE_warning_state(resultUnit.value(26));
                    // qDebug()<<"后上2刀辅助 - 报警: "<<resultUnit.value(27);
                    setBU2_AE_warning_state(resultUnit.value(27));
                    // qDebug()<<"前下1刀 - 报警: "<<resultUnit.value(28);
                    setFD1_warning_state(resultUnit.value(28));
                    // qDebug()<<"前下2刀 - 报警: "<<resultUnit.value(29);
                    setFD2_warning_state(resultUnit.value(29));
                    // qDebug()<<"后下1刀 - 报警: "<<resultUnit.value(30);
                    setBD1_warning_state(resultUnit.value(30));
                    // qDebug()<<"后下2刀 - 报警: "<<resultUnit.value(31);
                    setBD2_warning_state(resultUnit.value(31));
                    // qDebug()<<"工进1 - 报警: "<<resultUnit.value(32);
                    setEntry1_warning_state(resultUnit.value(32));
                    // qDebug()<<"工进2 - 报警: "<<resultUnit.value(33);
                    setEntry2_warning_state(resultUnit.value(33));
                    // qDebug()<<"压辊 - 报警: "<<resultUnit.value(34);
                    setIdler_warning_state(resultUnit.value(34));

                    // qDebug()<<"前上1刀 - 正限位: "<<resultUnit.value(40);
                    setFU1_Z_limit_state(resultUnit.value(40));
                    // qDebug()<<"前上2刀 - 正限位: "<<resultUnit.value(41);
                    setFU2_Z_limit_state(resultUnit.value(41));
                    // qDebug()<<"前上1刀辅助 - 正限位: "<<resultUnit.value(42);
                    setFU1_AE_Z_limit_state(resultUnit.value(42));
                    // qDebug()<<"前上2刀辅助 - 正限位: "<<resultUnit.value(43);
                    setFU2_AE_Z_limit_state(resultUnit.value(43));
                    // qDebug()<<"后上1刀 - 正限位: "<<resultUnit.value(44);
                    setBU1_Z_limit_state(resultUnit.value(44));
                    // qDebug()<<"后上2刀 - 正限位: "<<resultUnit.value(45);
                    setBU2_Z_limit_state(resultUnit.value(45));
                    // qDebug()<<"后上1刀辅助 - 正限位: "<<resultUnit.value(46);
                    setBU1_AE_Z_limit_state(resultUnit.value(46));
                    // qDebug()<<"后上2刀辅助 - 正限位: "<<resultUnit.value(47);
                    setBU2_AE_Z_limit_state(resultUnit.value(47));
                    // qDebug()<<"前下1刀 - 正限位: "<<resultUnit.value(48);
                    setFD1_Z_limit_state(resultUnit.value(48));
                    // qDebug()<<"前下2刀 - 正限位: "<<resultUnit.value(49);
                    setFD2_Z_limit_state(resultUnit.value(49));
                    // qDebug()<<"后下1刀 - 正限位: "<<resultUnit.value(50);
                    setBD1_Z_limit_state(resultUnit.value(50));
                    // qDebug()<<"后下2刀 - 正限位: "<<resultUnit.value(51);
                    setBD2_Z_limit_state(resultUnit.value(51));
                    // qDebug()<<"工进1 - 正限位: "<<resultUnit.value(52);
                    setEntry1_Z_limit_state(resultUnit.value(52));
                    // qDebug()<<"工进2 - 正限位: "<<resultUnit.value(53);
                    setEntry2_Z_limit_state(resultUnit.value(53));
                    // qDebug()<<"压辊 - 正限位: "<<resultUnit.value(54);
                    setIdler_Z_limit_state(resultUnit.value(54));

                    // qDebug()<<"前上1刀 - 反限位: "<<resultUnit.value(60);
                    setFU1_F_limit_state(resultUnit.value(60));
                    // qDebug()<<"前上2刀 - 反限位: "<<resultUnit.value(61);
                    setFU2_F_limit_state(resultUnit.value(61));
                    // qDebug()<<"前上1刀辅助 - 反限位: "<<resultUnit.value(62);
                    setFU1_AE_F_limit_state(resultUnit.value(62));
                    // qDebug()<<"前上2刀辅助 - 反限位: "<<resultUnit.value(63);
                    setFU2_AE_F_limit_state(resultUnit.value(63));
                    // qDebug()<<"后上1刀 - 反限位: "<<resultUnit.value(66);
                    setBU1_F_limit_state(resultUnit.value(66));
                    // qDebug()<<"后上2刀 - 反限位: "<<resultUnit.value(65);
                    setBU2_F_limit_state(resultUnit.value(65));
                    // qDebug()<<"后上1刀辅助 - 反限位: "<<resultUnit.value(66);
                    setBU1_AE_F_limit_state(resultUnit.value(66));
                    // qDebug()<<"后上2刀辅助 - 反限位: "<<resultUnit.value(67);
                    setBU2_AE_F_limit_state(resultUnit.value(67));
                    // qDebug()<<"前下1刀 - 反限位: "<<resultUnit.value(68);
                    setFD1_F_limit_state(resultUnit.value(68));
                    // qDebug()<<"前下2刀 - 反限位: "<<resultUnit.value(69);
                    setFD2_F_limit_state(resultUnit.value(69));
                    // qDebug()<<"后下1刀 - 反限位: "<<resultUnit.value(70);
                    setBD1_F_limit_state(resultUnit.value(70));
                    // qDebug()<<"后下2刀 - 反限位: "<<resultUnit.value(71);
                    setBD2_F_limit_state(resultUnit.value(71));
                    // qDebug()<<"工进1 - 反限位: "<<resultUnit.value(72);
                    setEntry1_F_limit_state(resultUnit.value(72));
                    // qDebug()<<"工进2 - 反限位: "<<resultUnit.value(73);
                    setEntry2_F_limit_state(resultUnit.value(73));
                    // qDebug()<<"压辊 - 反限位: "<<resultUnit.value(74);
                    setIdler_F_limit_state(resultUnit.value(74));

                }
            });
        }
    }
}

void ModbusTCP_Class::init_Warning_Signals()
{
    for(int i = 0 ; i < 60; i++)
    {
        m_WarnVector.append(false);
        m_NewWarnVector.append(false);
    }

    // m_WarnDetail.insert(0,tr("前上刀盘1-定位中"));
    // m_WarnDetail.insert(1,tr("前上刀盘2-定位中"));
    // m_WarnDetail.insert(2,tr("前上刀盘1辅工-定位中"));
    // m_WarnDetail.insert(3,tr("前上刀盘2辅工-定位中"));
    // m_WarnDetail.insert(4,tr("后上刀盘1-定位中"));
    // m_WarnDetail.insert(5,tr("后上刀盘2-定位中"));
    // m_WarnDetail.insert(6,tr("后上刀盘1辅工-定位中"));
    // m_WarnDetail.insert(7,tr("后上刀盘2辅工-定位中"));
    // m_WarnDetail.insert(8,tr("前下刀盘1-定位中"));
    // m_WarnDetail.insert(9,tr("前下刀盘2-定位中"));
    // m_WarnDetail.insert(10,tr("后下刀盘1-定位中"));
    // m_WarnDetail.insert(11,tr("后下刀盘2-定位中"));
    // m_WarnDetail.insert(12,tr("工进1-定位中"));
    // m_WarnDetail.insert(13,tr("工进2-定位中"));
    // m_WarnDetail.insert(14,tr("压辊-定位中"));

    m_WarnDetail.insert(0,tr("前上刀盘1-报警"));
    m_WarnDetail.insert(1,tr("前上刀盘2-报警"));
    m_WarnDetail.insert(2,tr("前上刀盘1辅工-报警"));
    m_WarnDetail.insert(3,tr("前上刀盘2辅工-报警"));
    m_WarnDetail.insert(4,tr("后上刀盘1-报警"));
    m_WarnDetail.insert(5,tr("后上刀盘2-报警"));
    m_WarnDetail.insert(6,tr("后上刀盘1辅工-报警"));
    m_WarnDetail.insert(7,tr("后上刀盘2辅工-报警"));
    m_WarnDetail.insert(8,tr("前下刀盘1-报警"));
    m_WarnDetail.insert(9,tr("前下刀盘2-报警"));
    m_WarnDetail.insert(10,tr("后下刀盘1-报警"));
    m_WarnDetail.insert(11,tr("后下刀盘2-报警"));
    m_WarnDetail.insert(12,tr("工进1-报警"));
    m_WarnDetail.insert(13,tr("工进2-报警"));
    m_WarnDetail.insert(14,tr("压辊-报警"));

    m_WarnDetail.insert(15,tr("前上刀盘1-正向超程"));
    m_WarnDetail.insert(16,tr("前上刀盘2-正向超程"));
    m_WarnDetail.insert(17,tr("前上刀盘1辅工-正向超程"));
    m_WarnDetail.insert(18,tr("前上刀盘2辅工-正向超程"));
    m_WarnDetail.insert(19,tr("后上刀盘1-正向超程"));
    m_WarnDetail.insert(20,tr("后上刀盘2-正向超程"));
    m_WarnDetail.insert(21,tr("后上刀盘1辅工-正向超程"));
    m_WarnDetail.insert(22,tr("后上刀盘2辅工-正向超程"));
    m_WarnDetail.insert(23,tr("前下刀盘1-正向超程"));
    m_WarnDetail.insert(24,tr("前下刀盘2-正向超程"));
    m_WarnDetail.insert(25,tr("后下刀盘1-正向超程"));
    m_WarnDetail.insert(26,tr("后下刀盘2-正向超程"));
    m_WarnDetail.insert(27,tr("工进1-正向超程"));
    m_WarnDetail.insert(28,tr("工进2-正向超程"));
    m_WarnDetail.insert(29,tr("压辊-正向超程"));

    m_WarnDetail.insert(30,tr("前上刀盘1-反向超程"));
    m_WarnDetail.insert(31,tr("前上刀盘2-反向超程"));
    m_WarnDetail.insert(32,tr("前上刀盘1辅工-反向超程"));
    m_WarnDetail.insert(33,tr("前上刀盘2辅工-反向超程"));
    m_WarnDetail.insert(34,tr("后上刀盘1-反向超程"));
    m_WarnDetail.insert(35,tr("后上刀盘2-反向超程"));
    m_WarnDetail.insert(36,tr("后上刀盘1辅工-反向超程"));
    m_WarnDetail.insert(37,tr("后上刀盘2辅工-反向超程"));
    m_WarnDetail.insert(38,tr("前下刀盘1-反向超程"));
    m_WarnDetail.insert(39,tr("前下刀盘2-反向超程"));
    m_WarnDetail.insert(40,tr("后下刀盘1-反向超程"));
    m_WarnDetail.insert(41,tr("后下刀盘2-反向超程"));
    m_WarnDetail.insert(42,tr("工进1-反向超程"));
    m_WarnDetail.insert(43,tr("工进2-反向超程"));
    m_WarnDetail.insert(44,tr("压辊-反向超程"));


}

void ModbusTCP_Class::read_New_Warning_Signals()
{
    for(int i = 0 ; i < m_WarnVector.size() ; i++)
    {
        switch(i)
        {
        case 0: {
            m_NewWarnVector[i] = (FU1_warning_state() == 1 ? true : false);
            break;
        }
        case 1: {
            m_NewWarnVector[i] = (FU2_warning_state() == 1 ? true : false);
            break;
        }
        case 2: {
            m_NewWarnVector[i] = (FU1_AE_warning_state() == 1 ? true : false);
            break;
        }
        case 3: {
            m_NewWarnVector[i] = (FU2_AE_warning_state() == 1 ? true : false);
            break;
        }
        case 4: {
            m_NewWarnVector[i] = (BU1_warning_state() == 1 ? true : false);
            break;
        }
        case 5: {
            m_NewWarnVector[i] = (BU2_warning_state() == 1 ? true : false);
            break;
        }
        case 6: {
            m_NewWarnVector[i] = (BU1_AE_warning_state() == 1 ? true : false);
            break;
        }
        case 7: {
            m_NewWarnVector[i] = (BU2_AE_warning_state() == 1 ? true : false);
            break;
        }
        case 8: {
            m_NewWarnVector[i] = (FD1_warning_state() == 1 ? true : false);
            break;
        }
        case 9: {
            m_NewWarnVector[i] = (FD2_warning_state() == 1 ? true : false);
            break;
        }
        case 10: {
            m_NewWarnVector[i] = (BD1_warning_state() == 1 ? true : false);
            break;
        }
        case 11: {
            m_NewWarnVector[i] = (BD2_warning_state() == 1 ? true : false);
            break;
        }
        case 12: {
            m_NewWarnVector[i] = (Entry1_warning_state() == 1 ? true : false);
            break;
        }
        case 13: {
            m_NewWarnVector[i] = (Entry2_warning_state() == 1 ? true : false);
            break;
        }
        case 14: {
            m_NewWarnVector[i] = (Idler_warning_state() == 1 ? true : false);
            break;
        }

        case 15: {
            m_NewWarnVector[i] = (FU1_Z_limit_state() == 1 ? true : false);
            break;
        }
        case 16: {
            m_NewWarnVector[i] = (FU2_Z_limit_state() == 1 ? true : false);
            break;
        }
        case 17: {
            m_NewWarnVector[i] = (FU1_AE_Z_limit_state() == 1 ? true : false);
            break;
        }
        case 18: {
            m_NewWarnVector[i] = (FU2_AE_Z_limit_state() == 1 ? true : false);
            break;
        }
        case 19: {
            m_NewWarnVector[i] = (BU1_Z_limit_state() == 1 ? true : false);
            break;
        }
        case 20: {
            m_NewWarnVector[i] = (BU2_Z_limit_state() == 1 ? true : false);
            break;
        }
        case 21: {
            m_NewWarnVector[i] = (BU1_AE_Z_limit_state() == 1 ? true : false);
            break;
        }
        case 22: {
            m_NewWarnVector[i] = (BU2_AE_Z_limit_state() == 1 ? true : false);
            break;
        }
        case 23: {
            m_NewWarnVector[i] = (FD1_Z_limit_state() == 1 ? true : false);
            break;
        }
        case 24: {
            m_NewWarnVector[i] = (FD2_Z_limit_state() == 1 ? true : false);
            break;
        }
        case 25: {
            m_NewWarnVector[i] = (BD1_Z_limit_state() == 1 ? true : false);
            break;
        }
        case 26: {
            m_NewWarnVector[i] = (BD2_Z_limit_state() == 1 ? true : false);
            break;
        }
        case 27: {
            m_NewWarnVector[i] = (Entry1_Z_limit_state() == 1 ? true : false);
            break;
        }
        case 28: {
            m_NewWarnVector[i] = (Entry2_Z_limit_state() == 1 ? true : false);
            break;
        }
        case 29: {
            m_NewWarnVector[i] = (Idler_Z_limit_state() == 1 ? true : false);
            break;
        }

        case 30: {
            m_NewWarnVector[i] = (FU1_F_limit_state() == 1 ? true : false);
            break;
        }
        case 31: {
            m_NewWarnVector[i] = (FU2_F_limit_state() == 1 ? true : false);
            break;
        }
        case 32: {
            m_NewWarnVector[i] = (FU1_AE_F_limit_state() == 1 ? true : false);
            break;
        }
        case 33: {
            m_NewWarnVector[i] = (FU2_AE_F_limit_state() == 1 ? true : false);
            break;
        }
        case 34: {
            m_NewWarnVector[i] = (BU1_F_limit_state() == 1 ? true : false);
            break;
        }
        case 35: {
            m_NewWarnVector[i] = (BU2_F_limit_state() == 1 ? true : false);
            break;
        }
        case 36: {
            m_NewWarnVector[i] = (BU1_AE_F_limit_state() == 1 ? true : false);
            break;
        }
        case 37: {
            m_NewWarnVector[i] = (BU2_AE_F_limit_state() == 1 ? true : false);
            break;
        }
        case 38: {
            m_NewWarnVector[i] = (FD1_F_limit_state() == 1 ? true : false);
            break;
        }
        case 39: {
            m_NewWarnVector[i] = (FD2_F_limit_state() == 1 ? true : false);
            break;
        }
        case 40: {
            m_NewWarnVector[i] = (BD1_F_limit_state() == 1 ? true : false);
            break;
        }
        case 41: {
            m_NewWarnVector[i] = (BD2_F_limit_state() == 1 ? true : false);
            break;
        }
        case 42: {
            m_NewWarnVector[i] = (Entry1_F_limit_state() == 1 ? true : false);
            break;
        }
        case 43: {
            m_NewWarnVector[i] = (Entry2_F_limit_state() == 1 ? true : false);
            break;
        }
        case 44: {
            m_NewWarnVector[i] = (Idler_F_limit_state() == 1 ? true : false);
            break;
        }

        }
    }

    save_Warning_Details_Info();

}

void ModbusTCP_Class::read_Warning_Signals()
{
    m_WarnInfo = tr("当前:");

    for(int i = 0 ; i < m_WarnVector.size(); i++)
    {
        get_Warning_Details_Info(i);
    }

    emit warning_Signal_Changed(m_WarnInfo);

}

void ModbusTCP_Class::get_Warning_Details_Info(int index)
{
    if(m_WarnVector[index] == true)
    {
        m_WarnInfo = m_WarnInfo + m_WarnDetail[index];
    }
}

void ModbusTCP_Class::save_Warning_Details_Info()
{
    // // 获取当前系统日期和时间
    // QDateTime currentTime = QDateTime::currentDateTime();
    // // 格式化日期为 "yyyy-MM-dd" 形式
    // QString formatDate = currentTime.date().toString("yyyy-MM-dd");
    // // 格式化时间为 "HH:mm:ss" 形式
    // QString formatTime = currentTime.time().toString("HH:mm:ss");

    // for(int i = 0 ;i < m_WarnVector.size(); i++)
    // {
    //     if(m_WarnVector[i] != m_NewWarnVector[i])
    //     {
    //         if(m_WarnVector[i] == true)
    //         {
    //             qDebug()<<"第 "<<QString::number(i)<<" 位消除报警";


    //             for(int j = 0 ; j < m_Warning_History.size() ; j++)
    //             {
    //                 if(m_Warning_History.at(j).disciption == m_WarnDetail[i] && m_Warning_History.at(j).endTime == tr("报警中"))
    //                 {
    //                     WarningInfo warnInfo;
    //                     warnInfo.startDateTime = m_Warning_History.at(j).startDateTime;
    //                     warnInfo.startDate = m_Warning_History.at(j).startDate;
    //                     warnInfo.startTime = m_Warning_History.at(j).startTime;
    //                     warnInfo.disciption = m_Warning_History.at(j).disciption;
    //                     warnInfo.endTime = formatTime;

    //                     int secondDifference = warnInfo.startDateTime.secsTo(currentTime);
    //                     int hours = (secondDifference/3600);
    //                     int minutes = ((secondDifference % 3600) / 60);
    //                     int seconds = (secondDifference % 60);

    //                     QString durationTime = QString("%1:%2:%3")
    //                             .arg(hours,2,10,QLatin1Char('0'))
    //                             .arg(minutes,2,10,QLatin1Char('0'))
    //                             .arg(seconds,2,10,QLatin1Char('0'));


    //                     warnInfo.duration = durationTime;

    //                     qDebug()<<"报警信息持续时间 : "<<warnInfo.duration;

    //                     m_Warning_History.replace(j,warnInfo);

    //                 }
    //             }

    //         }
    //         else
    //         {
    //             qDebug()<<"第 : "<<QString::number(i)<<" 位发生报警";

    //             WarningInfo warnInfo;
    //             warnInfo.startDateTime = currentTime;
    //             warnInfo.startDate = formatDate;
    //             warnInfo.startTime = formatTime;
    //             warnInfo.disciption = m_WarnDetail[i];
    //             warnInfo.endTime = tr("报警中");
    //             m_Warning_History.append(warnInfo);

    //         }

    //         m_WarnVector[i] = m_NewWarnVector[i];

    //     }
    // }


    // QVariantList historyList;

    // for(int i = 0 ; i< m_Warning_History.size(); i++)
    // {
    //     QVariantMap map;
    //     map.insert("startDate",m_Warning_History.at(i).startDate);
    //     map.insert("startTime",m_Warning_History.at(i).startTime);
    //     map.insert("discripTion",m_Warning_History.at(i).disciption);
    //     map.insert("endTime",m_Warning_History.at(i).endTime);
    //     map.insert("duationTime",m_Warning_History.at(i).duration);
    //     historyList.append(map);
    // }

    // // 发送报警历史信息改变
    // emit warning_History_Data_Changed(historyList);

    // read_Warning_Signals();


    QDateTime currentTime = QDateTime::currentDateTime();
    QString formatDate = currentTime.date().toString("yyyy-MM-dd");
    QString formatTime = currentTime.time().toString("HH:mm:ss");

    bool hasChanges = false;
    WarningInfo changedInfo;

    for(int i = 0 ;i < m_WarnVector.size(); i++)
    {
        if(m_WarnVector[i] != m_NewWarnVector[i])
        {
            hasChanges = true;
            if(m_WarnVector[i] == true)
            {
                // 报警解除
                for(int j = 0 ; j < m_Warning_History.size() ; j++)
                {
                    if(m_Warning_History.at(j).disciption == m_WarnDetail[i] &&
                            m_Warning_History.at(j).endTime == tr("报警中"))
                    {
                        WarningInfo warnInfo = m_Warning_History.at(j);
                        warnInfo.endTime = formatTime;

                        int secondDifference = warnInfo.startDateTime.secsTo(currentTime);
                        int hours = (secondDifference/3600);
                        int minutes = ((secondDifference % 3600) / 60);
                        int seconds = (secondDifference % 60);

                        warnInfo.duration = QString("%1:%2:%3")
                                .arg(hours,2,10,QLatin1Char('0'))
                                .arg(minutes,2,10,QLatin1Char('0'))
                                .arg(seconds,2,10,QLatin1Char('0'));

                        m_Warning_History.replace(j, warnInfo);
                        changedInfo = warnInfo;
                    }
                }
            }
            else
            {
                // 新报警
                WarningInfo warnInfo;
                warnInfo.startDateTime = currentTime;
                warnInfo.startDate = formatDate;
                warnInfo.startTime = formatTime;
                warnInfo.disciption = m_WarnDetail[i];
                warnInfo.endTime = tr("报警中");
                m_Warning_History.append(warnInfo);
                changedInfo = warnInfo;
            }
            m_WarnVector[i] = m_NewWarnVector[i];
        }
    }

    // 发送信号更新模型
    if (hasChanges) {
        emit warningUpdated(changedInfo);
        emit warningHistoryUpdated(m_Warning_History);
    }

    read_Warning_Signals();


}

void ModbusTCP_Class::foreach_Warning_History()
{
    for(int i = 0 ; i < m_Warning_History.size(); ++i)
    {
        qDebug()<<"--------------------"<<QString::number(i)<<"--------------------";
        qDebug()<<"startDateTime:"<<m_Warning_History.at(i).startDateTime;
        qDebug()<<"startDate:"<<m_Warning_History.at(i).startDate;
        qDebug()<<"startTime:"<<m_Warning_History.at(i).startTime;
        qDebug()<<"discription:"<<m_Warning_History.at(i).disciption;
        qDebug()<<"endtime:"<<m_Warning_History.at(i).endTime;
        qDebug()<<"durationTime:"<<m_Warning_History.at(i).duration;
    }
}

void ModbusTCP_Class::read_StopSignal_Coil()
{
    QModbusDataUnit readUnit1(QModbusDataUnit::DiscreteInputs,(0/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit1,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 前上刀1辅工
                    qDebug()<<"急停报警 : "<<resultUnit.value(0);
                    setStop_Signal(resultUnit.value(0));
                }
            });
        }
    }
}

void ModbusTCP_Class::enter_Pressed_Axis_Window()
{
    read_FU_knife_1_A_E_Other_Parameters_Hold();
}

void ModbusTCP_Class::read_FU_knife_1_A_E_Other_Parameters_Hold()
{
    QModbusDataUnit readUnit1(QModbusDataUnit::HoldingRegisters,(4200/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit1,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 前上刀1辅工
                    setFU_knife_1_A_E_PPR(QString("%1").arg(combinationToFloat(resultUnit.value(0),resultUnit.value(1)),0,'f',1));
                    setFU_knife_1_A_E_RR(QString("%1").arg(combinationToFloat(resultUnit.value(2),resultUnit.value(3)),0,'f',1));
                    setFU_knife_1_A_E_DPR(QString("%1").arg(combinationToFloat(resultUnit.value(4),resultUnit.value(5)),0,'f',1));
                    setFU_knife_1_A_E_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setFU_knife_1_A_E_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    setFU_knife_1_A_E_T_Acc(QString("%1").arg(combinationToFloat(resultUnit.value(10),resultUnit.value(11)),0,'f',1));
                    setFU_knife_1_A_E_T_Dec(QString("%1").arg(combinationToFloat(resultUnit.value(12),resultUnit.value(13)),0,'f',1));
                    setFU_knife_1_A_E_PL(QString("%1").arg(combinationToFloat(resultUnit.value(14),resultUnit.value(15)),0,'f',1));
                    setFU_knife_1_A_E_NL(QString("%1").arg(combinationToFloat(resultUnit.value(16),resultUnit.value(17)),0,'f',1));
                    setFU_knife_1_A_E_MLS(QString("%1").arg(combinationToFloat(resultUnit.value(26),resultUnit.value(27)),0,'f',1));
                    setFU_knife_1_A_E_MHS(QString("%1").arg(combinationToFloat(resultUnit.value(28),resultUnit.value(29)),0,'f',1));
                    setFU_knife_1_A_E_AS(QString("%1").arg(combinationToFloat(resultUnit.value(30),resultUnit.value(31)),0,'f',1));
                    setFU_knife_1_A_E_RTS(QString("%1").arg(combinationToFloat(resultUnit.value(32),resultUnit.value(33)),0,'f',1));
                    read_FU_knife_2_A_E_Other_Parameters_Hold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_FU_knife_2_A_E_Other_Parameters_Hold()
{
    QModbusDataUnit readUnit2(QModbusDataUnit::HoldingRegisters,(4300/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit2,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 前上刀2辅工
                    setFU_knife_2_A_E_PPR(QString("%1").arg(combinationToFloat(resultUnit.value(0),resultUnit.value(1)),0,'f',1));
                    setFU_knife_2_A_E_RR(QString("%1").arg(combinationToFloat(resultUnit.value(2),resultUnit.value(3)),0,'f',1));
                    setFU_knife_2_A_E_DPR(QString("%1").arg(combinationToFloat(resultUnit.value(4),resultUnit.value(5)),0,'f',1));
                    setFU_knife_2_A_E_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setFU_knife_2_A_E_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    setFU_knife_2_A_E_T_Acc(QString("%1").arg(combinationToFloat(resultUnit.value(10),resultUnit.value(11)),0,'f',1));
                    setFU_knife_2_A_E_T_Dec(QString("%1").arg(combinationToFloat(resultUnit.value(12),resultUnit.value(13)),0,'f',1));
                    setFU_knife_2_A_E_PL(QString("%1").arg(combinationToFloat(resultUnit.value(14),resultUnit.value(15)),0,'f',1));
                    setFU_knife_2_A_E_NL(QString("%1").arg(combinationToFloat(resultUnit.value(16),resultUnit.value(17)),0,'f',1));
                    setFU_knife_2_A_E_MLS(QString("%1").arg(combinationToFloat(resultUnit.value(26),resultUnit.value(27)),0,'f',1));
                    setFU_knife_2_A_E_MHS(QString("%1").arg(combinationToFloat(resultUnit.value(28),resultUnit.value(29)),0,'f',1));
                    setFU_knife_2_A_E_AS(QString("%1").arg(combinationToFloat(resultUnit.value(30),resultUnit.value(31)),0,'f',1));
                    setFU_knife_2_A_E_RTS(QString("%1").arg(combinationToFloat(resultUnit.value(32),resultUnit.value(33)),0,'f',1));
                    read_BU_knife_1_A_E_Other_Parameters_Hold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_BU_knife_1_A_E_Other_Parameters_Hold()
{
    QModbusDataUnit readUnit3(QModbusDataUnit::HoldingRegisters,(4600/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit3,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 后上刀1辅工
                    setBU_knife_1_A_E_PPR(QString("%1").arg(combinationToFloat(resultUnit.value(0),resultUnit.value(1)),0,'f',1));
                    setBU_knife_1_A_E_RR(QString("%1").arg(combinationToFloat(resultUnit.value(2),resultUnit.value(3)),0,'f',1));
                    setBU_knife_1_A_E_DPR(QString("%1").arg(combinationToFloat(resultUnit.value(4),resultUnit.value(5)),0,'f',1));
                    setBU_knife_1_A_E_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setBU_knife_1_A_E_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    setBU_knife_1_A_E_T_Acc(QString("%1").arg(combinationToFloat(resultUnit.value(10),resultUnit.value(11)),0,'f',1));
                    setBU_knife_1_A_E_T_Dec(QString("%1").arg(combinationToFloat(resultUnit.value(12),resultUnit.value(13)),0,'f',1));
                    setBU_knife_1_A_E_PL(QString("%1").arg(combinationToFloat(resultUnit.value(14),resultUnit.value(15)),0,'f',1));
                    setBU_knife_1_A_E_NL(QString("%1").arg(combinationToFloat(resultUnit.value(16),resultUnit.value(17)),0,'f',1));
                    setBU_knife_1_A_E_MLS(QString("%1").arg(combinationToFloat(resultUnit.value(26),resultUnit.value(27)),0,'f',1));
                    setBU_knife_1_A_E_MHS(QString("%1").arg(combinationToFloat(resultUnit.value(28),resultUnit.value(29)),0,'f',1));
                    setBU_knife_1_A_E_AS(QString("%1").arg(combinationToFloat(resultUnit.value(30),resultUnit.value(31)),0,'f',1));
                    setBU_knife_1_A_E_RTS(QString("%1").arg(combinationToFloat(resultUnit.value(32),resultUnit.value(33)),0,'f',1));
                    read_BU_knife_2_A_E_Other_Parameters_Hold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_BU_knife_2_A_E_Other_Parameters_Hold()
{
    QModbusDataUnit readUnit4(QModbusDataUnit::HoldingRegisters,(4700/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit4,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 后上刀2辅工
                    setBU_knife_2_A_E_PPR(QString("%1").arg(combinationToFloat(resultUnit.value(0),resultUnit.value(1)),0,'f',1));
                    setBU_knife_2_A_E_RR(QString("%1").arg(combinationToFloat(resultUnit.value(2),resultUnit.value(3)),0,'f',1));
                    setBU_knife_2_A_E_DPR(QString("%1").arg(combinationToFloat(resultUnit.value(4),resultUnit.value(5)),0,'f',1));
                    setBU_knife_2_A_E_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setBU_knife_2_A_E_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    setBU_knife_2_A_E_T_Acc(QString("%1").arg(combinationToFloat(resultUnit.value(10),resultUnit.value(11)),0,'f',1));
                    setBU_knife_2_A_E_T_Dec(QString("%1").arg(combinationToFloat(resultUnit.value(12),resultUnit.value(13)),0,'f',1));
                    setBU_knife_2_A_E_PL(QString("%1").arg(combinationToFloat(resultUnit.value(14),resultUnit.value(15)),0,'f',1));
                    setBU_knife_2_A_E_NL(QString("%1").arg(combinationToFloat(resultUnit.value(16),resultUnit.value(17)),0,'f',1));
                    setBU_knife_2_A_E_MLS(QString("%1").arg(combinationToFloat(resultUnit.value(26),resultUnit.value(27)),0,'f',1));
                    setBU_knife_2_A_E_MHS(QString("%1").arg(combinationToFloat(resultUnit.value(28),resultUnit.value(29)),0,'f',1));
                    setBU_knife_2_A_E_AS(QString("%1").arg(combinationToFloat(resultUnit.value(30),resultUnit.value(31)),0,'f',1));
                    setBU_knife_2_A_E_RTS(QString("%1").arg(combinationToFloat(resultUnit.value(32),resultUnit.value(33)),0,'f',1));
                    read_Entry_1_Other_Parameters_Hold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_Entry_1_Other_Parameters_Hold()
{
    QModbusDataUnit readUnit5(QModbusDataUnit::HoldingRegisters,(5200/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit5,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 工进1
                    setEntry_1_PPR(QString("%1").arg(combinationToFloat(resultUnit.value(0),resultUnit.value(1)),0,'f',1));
                    setEntry_1_RR(QString("%1").arg(combinationToFloat(resultUnit.value(2),resultUnit.value(3)),0,'f',1));
                    setEntry_1_DPR(QString("%1").arg(combinationToFloat(resultUnit.value(4),resultUnit.value(5)),0,'f',1));
                    setEntry_1_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setEntry_1_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    setEntry_1_T_Acc(QString("%1").arg(combinationToFloat(resultUnit.value(10),resultUnit.value(11)),0,'f',1));
                    setEntry_1_T_Dec(QString("%1").arg(combinationToFloat(resultUnit.value(12),resultUnit.value(13)),0,'f',1));
                    setEntry_1_PL(QString("%1").arg(combinationToFloat(resultUnit.value(14),resultUnit.value(15)),0,'f',1));
                    setEntry_1_NL(QString("%1").arg(combinationToFloat(resultUnit.value(16),resultUnit.value(17)),0,'f',1));
                    setEntry_1_MLS(QString("%1").arg(combinationToFloat(resultUnit.value(26),resultUnit.value(27)),0,'f',1));
                    setEntry_1_MHS(QString("%1").arg(combinationToFloat(resultUnit.value(28),resultUnit.value(29)),0,'f',1));
                    setEntry_1_AS(QString("%1").arg(combinationToFloat(resultUnit.value(30),resultUnit.value(31)),0,'f',1));
                    setEntry_1_RTS(QString("%1").arg(combinationToFloat(resultUnit.value(32),resultUnit.value(33)),0,'f',1));
                    read_Entry_2_Other_Parameters_Hold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_Entry_2_Other_Parameters_Hold()
{
    QModbusDataUnit readUnit6(QModbusDataUnit::HoldingRegisters,(5300/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit6,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 工进2
                    setEntry_2_PPR(QString("%1").arg(combinationToFloat(resultUnit.value(0),resultUnit.value(1)),0,'f',1));
                    setEntry_2_RR(QString("%1").arg(combinationToFloat(resultUnit.value(2),resultUnit.value(3)),0,'f',1));
                    setEntry_2_DPR(QString("%1").arg(combinationToFloat(resultUnit.value(4),resultUnit.value(5)),0,'f',1));
                    setEntry_2_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setEntry_2_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    setEntry_2_T_Acc(QString("%1").arg(combinationToFloat(resultUnit.value(10),resultUnit.value(11)),0,'f',1));
                    setEntry_2_T_Dec(QString("%1").arg(combinationToFloat(resultUnit.value(12),resultUnit.value(13)),0,'f',1));
                    setEntry_2_PL(QString("%1").arg(combinationToFloat(resultUnit.value(14),resultUnit.value(15)),0,'f',1));
                    setEntry_2_NL(QString("%1").arg(combinationToFloat(resultUnit.value(16),resultUnit.value(17)),0,'f',1));
                    setEntry_2_MLS(QString("%1").arg(combinationToFloat(resultUnit.value(26),resultUnit.value(27)),0,'f',1));
                    setEntry_2_MHS(QString("%1").arg(combinationToFloat(resultUnit.value(28),resultUnit.value(29)),0,'f',1));
                    setEntry_2_AS(QString("%1").arg(combinationToFloat(resultUnit.value(30),resultUnit.value(31)),0,'f',1));
                    setEntry_2_RTS(QString("%1").arg(combinationToFloat(resultUnit.value(32),resultUnit.value(33)),0,'f',1));
                }
            });
        }
    }
}

void ModbusTCP_Class::enter_knife_Axis_Window()
{
    read_FU_knife_1_Other_ParametersHold();
}

void ModbusTCP_Class::read_FU_knife_1_Other_ParametersHold()
{
    QModbusDataUnit readUnit1(QModbusDataUnit::HoldingRegisters,(4000/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit1,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 前上刀1辅工
                    setFU_knife_1_PPR(QString("%1").arg(combinationToFloat(resultUnit.value(0),resultUnit.value(1)),0,'f',1));
                    setFU_knife_1_RR(QString("%1").arg(combinationToFloat(resultUnit.value(2),resultUnit.value(3)),0,'f',1));
                    setFU_knife_1_DPR(QString("%1").arg(combinationToFloat(resultUnit.value(4),resultUnit.value(5)),0,'f',1));
                    setFU_knife_1_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setFU_knife_1_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    setFU_knife_1_T_Acc(QString("%1").arg(combinationToFloat(resultUnit.value(10),resultUnit.value(11)),0,'f',1));
                    setFU_knife_1_T_Dec(QString("%1").arg(combinationToFloat(resultUnit.value(12),resultUnit.value(13)),0,'f',1));
                    setFU_knife_1_PL(QString("%1").arg(combinationToFloat(resultUnit.value(14),resultUnit.value(15)),0,'f',1));
                    setFU_knife_1_NL(QString("%1").arg(combinationToFloat(resultUnit.value(16),resultUnit.value(17)),0,'f',1));
                    setFU_knife_1_MLS(QString("%1").arg(combinationToFloat(resultUnit.value(26),resultUnit.value(27)),0,'f',1));
                    setFU_knife_1_MHS(QString("%1").arg(combinationToFloat(resultUnit.value(28),resultUnit.value(29)),0,'f',1));
                    setFU_knife_1_AS(QString("%1").arg(combinationToFloat(resultUnit.value(30),resultUnit.value(31)),0,'f',1));
                    setFU_knife_1_RTS(QString("%1").arg(combinationToFloat(resultUnit.value(32),resultUnit.value(33)),0,'f',1));
                    read_FU_knife_2_Other_ParametersHold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_FU_knife_2_Other_ParametersHold()
{
    QModbusDataUnit readUnit2(QModbusDataUnit::HoldingRegisters,(4100/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit2,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 前上刀2辅工
                    setFU_knife_2_PPR(QString("%1").arg(combinationToFloat(resultUnit.value(0),resultUnit.value(1)),0,'f',1));
                    setFU_knife_2_RR(QString("%1").arg(combinationToFloat(resultUnit.value(2),resultUnit.value(3)),0,'f',1));
                    setFU_knife_2_DPR(QString("%1").arg(combinationToFloat(resultUnit.value(4),resultUnit.value(5)),0,'f',1));
                    setFU_knife_2_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setFU_knife_2_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    setFU_knife_2_T_Acc(QString("%1").arg(combinationToFloat(resultUnit.value(10),resultUnit.value(11)),0,'f',1));
                    setFU_knife_2_T_Dec(QString("%1").arg(combinationToFloat(resultUnit.value(12),resultUnit.value(13)),0,'f',1));
                    setFU_knife_2_PL(QString("%1").arg(combinationToFloat(resultUnit.value(14),resultUnit.value(15)),0,'f',1));
                    setFU_knife_2_NL(QString("%1").arg(combinationToFloat(resultUnit.value(16),resultUnit.value(17)),0,'f',1));
                    setFU_knife_2_MLS(QString("%1").arg(combinationToFloat(resultUnit.value(26),resultUnit.value(27)),0,'f',1));
                    setFU_knife_2_MHS(QString("%1").arg(combinationToFloat(resultUnit.value(28),resultUnit.value(29)),0,'f',1));
                    setFU_knife_2_AS(QString("%1").arg(combinationToFloat(resultUnit.value(30),resultUnit.value(31)),0,'f',1));
                    setFU_knife_2_RTS(QString("%1").arg(combinationToFloat(resultUnit.value(32),resultUnit.value(33)),0,'f',1));
                    read_BU_knife_1_Other_ParametersHold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_BU_knife_1_Other_ParametersHold()
{
    QModbusDataUnit readUnit3(QModbusDataUnit::HoldingRegisters,(4400/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit3,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 后上刀1
                    setBU_knife_1_PPR(QString("%1").arg(combinationToFloat(resultUnit.value(0),resultUnit.value(1)),0,'f',1));
                    setBU_knife_1_RR(QString("%1").arg(combinationToFloat(resultUnit.value(2),resultUnit.value(3)),0,'f',1));
                    setBU_knife_1_DPR(QString("%1").arg(combinationToFloat(resultUnit.value(4),resultUnit.value(5)),0,'f',1));
                    setBU_knife_1_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setBU_knife_1_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    setBU_knife_1_T_Acc(QString("%1").arg(combinationToFloat(resultUnit.value(10),resultUnit.value(11)),0,'f',1));
                    setBU_knife_1_T_Dec(QString("%1").arg(combinationToFloat(resultUnit.value(12),resultUnit.value(13)),0,'f',1));
                    setBU_knife_1_PL(QString("%1").arg(combinationToFloat(resultUnit.value(14),resultUnit.value(15)),0,'f',1));
                    setBU_knife_1_NL(QString("%1").arg(combinationToFloat(resultUnit.value(16),resultUnit.value(17)),0,'f',1));
                    setBU_knife_1_MLS(QString("%1").arg(combinationToFloat(resultUnit.value(26),resultUnit.value(27)),0,'f',1));
                    setBU_knife_1_MHS(QString("%1").arg(combinationToFloat(resultUnit.value(28),resultUnit.value(29)),0,'f',1));
                    setBU_knife_1_AS(QString("%1").arg(combinationToFloat(resultUnit.value(30),resultUnit.value(31)),0,'f',1));
                    setBU_knife_1_RTS(QString("%1").arg(combinationToFloat(resultUnit.value(32),resultUnit.value(33)),0,'f',1));
                    read_BU_knife_2_Other_ParametersHold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_BU_knife_2_Other_ParametersHold()
{
    QModbusDataUnit readUnit4(QModbusDataUnit::HoldingRegisters,(4500/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit4,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 后上刀1
                    setBU_knife_2_PPR(QString("%1").arg(combinationToFloat(resultUnit.value(0),resultUnit.value(1)),0,'f',1));
                    setBU_knife_2_RR(QString("%1").arg(combinationToFloat(resultUnit.value(2),resultUnit.value(3)),0,'f',1));
                    setBU_knife_2_DPR(QString("%1").arg(combinationToFloat(resultUnit.value(4),resultUnit.value(5)),0,'f',1));
                    setBU_knife_2_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setBU_knife_2_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    setBU_knife_2_T_Acc(QString("%1").arg(combinationToFloat(resultUnit.value(10),resultUnit.value(11)),0,'f',1));
                    setBU_knife_2_T_Dec(QString("%1").arg(combinationToFloat(resultUnit.value(12),resultUnit.value(13)),0,'f',1));
                    setBU_knife_2_PL(QString("%1").arg(combinationToFloat(resultUnit.value(14),resultUnit.value(15)),0,'f',1));
                    setBU_knife_2_NL(QString("%1").arg(combinationToFloat(resultUnit.value(16),resultUnit.value(17)),0,'f',1));
                    setBU_knife_2_MLS(QString("%1").arg(combinationToFloat(resultUnit.value(26),resultUnit.value(27)),0,'f',1));
                    setBU_knife_2_MHS(QString("%1").arg(combinationToFloat(resultUnit.value(28),resultUnit.value(29)),0,'f',1));
                    setBU_knife_2_AS(QString("%1").arg(combinationToFloat(resultUnit.value(30),resultUnit.value(31)),0,'f',1));
                    setBU_knife_2_RTS(QString("%1").arg(combinationToFloat(resultUnit.value(32),resultUnit.value(33)),0,'f',1));
                    read_FD_knife_1_Other_ParametersHold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_FD_knife_1_Other_ParametersHold()
{
    QModbusDataUnit readUnit5(QModbusDataUnit::HoldingRegisters,(4800/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit5,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 后上刀1
                    setFD_knife_1_PPR(QString("%1").arg(combinationToFloat(resultUnit.value(0),resultUnit.value(1)),0,'f',1));
                    setFD_knife_1_RR(QString("%1").arg(combinationToFloat(resultUnit.value(2),resultUnit.value(3)),0,'f',1));
                    setFD_knife_1_DPR(QString("%1").arg(combinationToFloat(resultUnit.value(4),resultUnit.value(5)),0,'f',1));
                    setFD_knife_1_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setFD_knife_1_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    setFD_knife_1_T_Acc(QString("%1").arg(combinationToFloat(resultUnit.value(10),resultUnit.value(11)),0,'f',1));
                    setFD_knife_1_T_Dec(QString("%1").arg(combinationToFloat(resultUnit.value(12),resultUnit.value(13)),0,'f',1));
                    setFD_knife_1_PL(QString("%1").arg(combinationToFloat(resultUnit.value(14),resultUnit.value(15)),0,'f',1));
                    setFD_knife_1_NL(QString("%1").arg(combinationToFloat(resultUnit.value(16),resultUnit.value(17)),0,'f',1));
                    setFD_knife_1_MLS(QString("%1").arg(combinationToFloat(resultUnit.value(26),resultUnit.value(27)),0,'f',1));
                    setFD_knife_1_MHS(QString("%1").arg(combinationToFloat(resultUnit.value(28),resultUnit.value(29)),0,'f',1));
                    setFD_knife_1_AS(QString("%1").arg(combinationToFloat(resultUnit.value(30),resultUnit.value(31)),0,'f',1));
                    setFD_knife_1_RTS(QString("%1").arg(combinationToFloat(resultUnit.value(32),resultUnit.value(33)),0,'f',1));
                    read_FD_knife_2_Other_ParametersHold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_FD_knife_2_Other_ParametersHold()
{
    QModbusDataUnit readUnit6(QModbusDataUnit::HoldingRegisters,(4900/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit6,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 后上刀1
                    setFD_knife_2_PPR(QString("%1").arg(combinationToFloat(resultUnit.value(0),resultUnit.value(1)),0,'f',1));
                    setFD_knife_2_RR(QString("%1").arg(combinationToFloat(resultUnit.value(2),resultUnit.value(3)),0,'f',1));
                    setFD_knife_2_DPR(QString("%1").arg(combinationToFloat(resultUnit.value(4),resultUnit.value(5)),0,'f',1));
                    setFD_knife_2_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setFD_knife_2_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    setFD_knife_2_T_Acc(QString("%1").arg(combinationToFloat(resultUnit.value(10),resultUnit.value(11)),0,'f',1));
                    setFD_knife_2_T_Dec(QString("%1").arg(combinationToFloat(resultUnit.value(12),resultUnit.value(13)),0,'f',1));
                    setFD_knife_2_PL(QString("%1").arg(combinationToFloat(resultUnit.value(14),resultUnit.value(15)),0,'f',1));
                    setFD_knife_2_NL(QString("%1").arg(combinationToFloat(resultUnit.value(16),resultUnit.value(17)),0,'f',1));
                    setFD_knife_2_MLS(QString("%1").arg(combinationToFloat(resultUnit.value(26),resultUnit.value(27)),0,'f',1));
                    setFD_knife_2_MHS(QString("%1").arg(combinationToFloat(resultUnit.value(28),resultUnit.value(29)),0,'f',1));
                    setFD_knife_2_AS(QString("%1").arg(combinationToFloat(resultUnit.value(30),resultUnit.value(31)),0,'f',1));
                    setFD_knife_2_RTS(QString("%1").arg(combinationToFloat(resultUnit.value(32),resultUnit.value(33)),0,'f',1));
                    read_BD_knife_1_Other_ParametersHold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_BD_knife_1_Other_ParametersHold()
{
    QModbusDataUnit readUnit7(QModbusDataUnit::HoldingRegisters,(5000/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit7,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 后上刀1
                    setBD_knife_1_PPR(QString("%1").arg(combinationToFloat(resultUnit.value(0),resultUnit.value(1)),0,'f',1));
                    setBD_knife_1_RR(QString("%1").arg(combinationToFloat(resultUnit.value(2),resultUnit.value(3)),0,'f',1));
                    setBD_knife_1_DPR(QString("%1").arg(combinationToFloat(resultUnit.value(4),resultUnit.value(5)),0,'f',1));
                    setBD_knife_1_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setBD_knife_1_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    setBD_knife_1_T_Acc(QString("%1").arg(combinationToFloat(resultUnit.value(10),resultUnit.value(11)),0,'f',1));
                    setBD_knife_1_T_Dec(QString("%1").arg(combinationToFloat(resultUnit.value(12),resultUnit.value(13)),0,'f',1));
                    setBD_knife_1_PL(QString("%1").arg(combinationToFloat(resultUnit.value(14),resultUnit.value(15)),0,'f',1));
                    setBD_knife_1_NL(QString("%1").arg(combinationToFloat(resultUnit.value(16),resultUnit.value(17)),0,'f',1));
                    setBD_knife_1_MLS(QString("%1").arg(combinationToFloat(resultUnit.value(26),resultUnit.value(27)),0,'f',1));
                    setBD_knife_1_MHS(QString("%1").arg(combinationToFloat(resultUnit.value(28),resultUnit.value(29)),0,'f',1));
                    setBD_knife_1_AS(QString("%1").arg(combinationToFloat(resultUnit.value(30),resultUnit.value(31)),0,'f',1));
                    setBD_knife_1_RTS(QString("%1").arg(combinationToFloat(resultUnit.value(32),resultUnit.value(33)),0,'f',1));
                    read_BD_knife_2_Other_ParametersHold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_BD_knife_2_Other_ParametersHold()
{
    QModbusDataUnit readUnit8(QModbusDataUnit::HoldingRegisters,(5100/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit8,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 后上刀1
                    setBD_knife_2_PPR(QString("%1").arg(combinationToFloat(resultUnit.value(0),resultUnit.value(1)),0,'f',1));
                    setBD_knife_2_RR(QString("%1").arg(combinationToFloat(resultUnit.value(2),resultUnit.value(3)),0,'f',1));
                    setBD_knife_2_DPR(QString("%1").arg(combinationToFloat(resultUnit.value(4),resultUnit.value(5)),0,'f',1));
                    setBD_knife_2_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setBD_knife_2_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    setBD_knife_2_T_Acc(QString("%1").arg(combinationToFloat(resultUnit.value(10),resultUnit.value(11)),0,'f',1));
                    setBD_knife_2_T_Dec(QString("%1").arg(combinationToFloat(resultUnit.value(12),resultUnit.value(13)),0,'f',1));
                    setBD_knife_2_PL(QString("%1").arg(combinationToFloat(resultUnit.value(14),resultUnit.value(15)),0,'f',1));
                    setBD_knife_2_NL(QString("%1").arg(combinationToFloat(resultUnit.value(16),resultUnit.value(17)),0,'f',1));
                    setBD_knife_2_MLS(QString("%1").arg(combinationToFloat(resultUnit.value(26),resultUnit.value(27)),0,'f',1));
                    setBD_knife_2_MHS(QString("%1").arg(combinationToFloat(resultUnit.value(28),resultUnit.value(29)),0,'f',1));
                    setBD_knife_2_AS(QString("%1").arg(combinationToFloat(resultUnit.value(30),resultUnit.value(31)),0,'f',1));
                    setBD_knife_2_RTS(QString("%1").arg(combinationToFloat(resultUnit.value(32),resultUnit.value(33)),0,'f',1));
                    read_Min_Max_Distance_Hold();
                }
            });
        }
    }
}

void ModbusTCP_Class::read_Min_Max_Distance_Hold()
{
    QModbusDataUnit readUnit1(QModbusDataUnit::HoldingRegisters,(5740/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit1,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 压辊参数
                    setknife_Max_Distance(QString("%1").arg(combinationToFloat(resultUnit.value(0),resultUnit.value(1)),0,'f',1));
                    setknife_Min_Distance(QString("%1").arg(combinationToFloat(resultUnit.value(2),resultUnit.value(3)),0,'f',1));
                }
            });
        }
    }
}

void ModbusTCP_Class::enter_Extra_Axis_Window()
{
    read_Idler_Axis_Parameters_Hold();
}

void ModbusTCP_Class::read_Idler_Axis_Parameters_Hold()
{
    QModbusDataUnit readUnit1(QModbusDataUnit::HoldingRegisters,(5400/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit1,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();
                    // 压辊参数
                    setIdler_PPR(QString("%1").arg(combinationToFloat(resultUnit.value(0),resultUnit.value(1)),0,'f',1));
                    setIdler_RR(QString("%1").arg(combinationToFloat(resultUnit.value(2),resultUnit.value(3)),0,'f',1));
                    setIdler_DPR(QString("%1").arg(combinationToFloat(resultUnit.value(4),resultUnit.value(5)),0,'f',1));
                    setIdler_ZP(QString("%1").arg(combinationToFloat(resultUnit.value(6),resultUnit.value(7)),0,'f',1));
                    setIdler_ZOC(QString("%1").arg(combinationToFloat(resultUnit.value(8),resultUnit.value(9)),0,'f',1));
                    setIdler_T_Acc(QString("%1").arg(combinationToFloat(resultUnit.value(10),resultUnit.value(11)),0,'f',1));
                    setIdler_T_Dec(QString("%1").arg(combinationToFloat(resultUnit.value(12),resultUnit.value(13)),0,'f',1));
                    setIdler_PL(QString("%1").arg(combinationToFloat(resultUnit.value(14),resultUnit.value(15)),0,'f',1));
                    setIdler_NL(QString("%1").arg(combinationToFloat(resultUnit.value(16),resultUnit.value(17)),0,'f',1));
                    setIdler_MLS(QString("%1").arg(combinationToFloat(resultUnit.value(26),resultUnit.value(27)),0,'f',1));
                    setIdler_MHS(QString("%1").arg(combinationToFloat(resultUnit.value(28),resultUnit.value(29)),0,'f',1));
                    setIdler_AS(QString("%1").arg(combinationToFloat(resultUnit.value(30),resultUnit.value(31)),0,'f',1));
                    setIdler_RTS(QString("%1").arg(combinationToFloat(resultUnit.value(32),resultUnit.value(33)),0,'f',1));
                    // read_Min_Max_Distance_Hold();
                }
            });
        }
    }
}

void ModbusTCP_Class::enter_Manual_Process_Window()
{
    read_Aimlocation_PM_Hold();
}

void ModbusTCP_Class::enter_Auto_Process_Window()
{
    read_Aimlocation_PM_Hold();
}

void ModbusTCP_Class::read_Aimlocation_PM_Hold()
{
    QModbusDataUnit readUnit1(QModbusDataUnit::HoldingRegisters,(5500/2),120);

    if(auto* reply = (m_PLC->sendReadRequest(readUnit1,1))){
        if(!reply->isFinished())
        {
            connect(reply,&QModbusReply::finished,this,[reply, this]()
            {
                if(reply->error() == QModbusDevice::NoError)
                {
                    const QModbusDataUnit resultUnit = reply->result();

                    setFU_knife_1_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(30),resultUnit.value(31)),0,'f',1));
                    setFU_knife_2_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(32),resultUnit.value(33)),0,'f',1));
                    setFU_knife_1_A_E_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(34),resultUnit.value(35)),0,'f',1));
                    setFU_knife_2_A_E_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(36),resultUnit.value(37)),0,'f',1));
                    setBU_knife_1_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(38),resultUnit.value(39)),0,'f',1));
                    setBU_knife_2_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(40),resultUnit.value(41)),0,'f',1));
                    setBU_knife_1_A_E_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(42),resultUnit.value(43)),0,'f',1));
                    setBU_knife_2_A_E_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(44),resultUnit.value(45)),0,'f',1));
                    setFD_knife_1_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(46),resultUnit.value(47)),0,'f',1));
                    setFD_knife_2_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(48),resultUnit.value(49)),0,'f',1));
                    setBD_knife_1_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(50),resultUnit.value(51)),0,'f',1));
                    setBD_knife_2_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(52),resultUnit.value(53)),0,'f',1));
                    setEntry_1_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(54),resultUnit.value(55)),0,'f',1));
                    setEntry_2_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(56),resultUnit.value(57)),0,'f',1));
                    setIdler_AimLoc(QString("%1").arg(combinationToFloat(resultUnit.value(58),resultUnit.value(59)),0,'f',1));

                    // setFU_knife_1_PM(QString("%1").arg(combinationToFloat(resultUnit.value(60),resultUnit.value(61)),0,'f',1));
                    // setFU_knife_2_PM(QString("%1").arg(combinationToFloat(resultUnit.value(62),resultUnit.value(63)),0,'f',1));
                    // setFU_knife_1_A_E_PM(QString("%1").arg(combinationToFloat(resultUnit.value(64),resultUnit.value(65)),0,'f',1));
                    // setFU_knife_2_A_E_PM(QString("%1").arg(combinationToFloat(resultUnit.value(66),resultUnit.value(67)),0,'f',1));
                    // setBU_knife_1_PM(QString("%1").arg(combinationToFloat(resultUnit.value(68),resultUnit.value(69)),0,'f',1));
                    // setBU_knife_2_PM(QString("%1").arg(combinationToFloat(resultUnit.value(70),resultUnit.value(71)),0,'f',1));
                    // setBU_knife_1_A_E_PM(QString("%1").arg(combinationToFloat(resultUnit.value(72),resultUnit.value(73)),0,'f',1));
                    // setBU_knife_2_A_E_PM(QString("%1").arg(combinationToFloat(resultUnit.value(74),resultUnit.value(75)),0,'f',1));
                    // setFD_knife_1_PM(QString("%1").arg(combinationToFloat(resultUnit.value(76),resultUnit.value(77)),0,'f',1));
                    // setFD_knife_2_PM(QString("%1").arg(combinationToFloat(resultUnit.value(78),resultUnit.value(79)),0,'f',1));
                    // setBD_knife_1_PM(QString("%1").arg(combinationToFloat(resultUnit.value(80),resultUnit.value(81)),0,'f',1));
                    // setBD_knife_2_PM(QString("%1").arg(combinationToFloat(resultUnit.value(82),resultUnit.value(83)),0,'f',1));
                    // setEntry_1_PM(QString("%1").arg(combinationToFloat(resultUnit.value(84),resultUnit.value(85)),0,'f',1));
                    // setEntry_2_PM(QString("%1").arg(combinationToFloat(resultUnit.value(86),resultUnit.value(87)),0,'f',1));
                    // setIdler_PM(QString("%1").arg(combinationToFloat(resultUnit.value(88),resultUnit.value(89)),0,'f',1));



                }
            });
        }
    }
}

ModbusTCP_Class::ModbusTCP_Class(QObject *parent)
    : QObject{parent}
{
    m_PLC = new QModbusTcpClient(this);

    m_PLC->setConnectionParameter(QModbusDevice::NetworkAddressParameter,"192.168.1.10");
    m_PLC->setConnectionParameter(QModbusDevice::NetworkPortParameter,502);

    m_PLC->connectDevice();

    // 设定响应时间
    m_PLC->setTimeout(500);
    // 重连次数
    m_PLC->setNumberOfRetries(3);

    m_Timer = new QTimer();

    m_Timer->setInterval(200);

    QObject::connect(m_Timer,&QTimer::timeout,this,&ModbusTCP_Class::read_PLC_All_Parameters_Slots);

    QObject::connect(m_PLC,&QModbusTcpClient::stateChanged,this,[this]{
        if(m_PLC->state() == QModbusTcpClient::ConnectedState)
        {
            qDebug()<<"ModbusTCP 已连接";
            setConnectState(1);
            read_Aimlocation_PM_Hold(); // 连接成功读取一次 目标位置 和 当前扭矩
            m_Timer->start();
        }
        else if(m_PLC->state() == QModbusTcpClient::UnconnectedState)
        {
            qDebug()<<"ModbusTCP 未连接";
            setConnectState(2);
            m_Timer->stop();
            m_PLC->connectDevice();
        }
        else if(m_PLC->state() == QModbusTcpClient::ConnectingState)
        {
            qDebug()<<"ModbusTCP 连接中...";
            m_Timer->stop();
            setConnectState(3);
        }
    });

    // 写入成功之后 读取 对应32位寄存器的值
    QObject::connect(this,&ModbusTCP_Class::write_PLC_Successed,this,&ModbusTCP_Class::write_Successed_Read_Hold);

    // 初始化报警信息
    init_Warning_Signals();
}

ModbusTCP_Class::~ModbusTCP_Class()
{
    m_PLC->deleteLater();
}

int ModbusTCP_Class::ConnectState() const
{
    return m_ConnectState;
}

void ModbusTCP_Class::setConnectState(int newConnectState)
{
    if (m_ConnectState == newConnectState)
        return;
    m_ConnectState = newConnectState;
    emit ConnectStateChanged();
}
/**
 * @brief 读取PLC 全部参数
 */
void ModbusTCP_Class::read_PLC_All_Parameters_Slots()
{
    read_CurrentLocation_AimLocation_PointMove_Torque_Hold();
    read_StopSignal_Coil();
    read_Location_Forbid_Signal_Hold();
    read_Mechine_states_Warning_signal_Hold();

    read_Warning_Signals();
    read_New_Warning_Signals();

}

void ModbusTCP_Class::write_Successed_Read_Hold(int addr)
{
    if (!m_PLC || m_PLC->state() != QModbusDevice::ConnectedState) {
        qDebug() << "error : disConnectedState";
        return;
    }

    // 使用QTimer::singleShot实现100ms延迟执行
    QTimer::singleShot(100, this, [this, addr]() {
        // 读取保持寄存器寄存器
        QModbusDataUnit readUnit(QModbusDataUnit::HoldingRegisters, (addr/2), 2);

        if (QModbusReply* reply = m_PLC->sendReadRequest(readUnit, 1)) {
            if (!reply->isFinished()) {
                connect(reply, &QModbusReply::finished, this,[this, reply, addr]() {
                    if (reply->error() == QModbusDevice::NoError) {
                        const QModbusDataUnit unit = reply->result();
                        uint16_t reg1 = unit.value(0);
                        uint16_t reg2 = unit.value(1);

                        // 转换为浮点数
                        float readValue = combinationToFloat(reg1, reg2);
                        QString valueStr = QString::number(readValue, 'f', 1);

                        qDebug() << "读取保持寄存器32成功:" << "地址:" << addr << "值:" << valueStr;

                        // 根据地址给对应的Q_PROPERTY赋值
                        switch(addr) {
                        case 5560:{     // 给 前上刀1 - 目标位置 属性赋值
                            setFU_knife_1_AimLoc(valueStr);
                            break;
                        }
                        case 5564:{     // 给 前上刀2 - 目标位置 属性赋值
                            setFU_knife_2_AimLoc(valueStr);
                            break;
                        }
                        case 5568:{     // 给 前上刀1辅工 - 目标位置 属性赋值
                            setFU_knife_1_A_E_AimLoc(valueStr);
                            break;
                        }
                        case 5572:{     // 给 前上刀2辅工 - 目标位置 属性赋值
                            setFU_knife_2_A_E_AimLoc(valueStr);
                            break;
                        }
                        case 5576:{     // 给 后上刀1 - 目标位置 属性赋值
                            setBU_knife_1_AimLoc(valueStr);
                            break;
                        }
                        case 5580:{     // 给 后上刀2 - 目标位置 属性赋值
                            setBU_knife_2_AimLoc(valueStr);
                            break;
                        }
                        case 5584:{     // 给 后上刀1辅工 - 目标位置 属性赋值
                            setBU_knife_1_A_E_AimLoc(valueStr);
                            break;
                        }
                        case 5588:{     // 给 后上刀2辅工 - 目标位置 属性赋值
                            setBU_knife_2_A_E_AimLoc(valueStr);
                            break;
                        }
                        case 5592:{     // 给 前下刀1 - 目标位置 属性赋值
                            setFD_knife_1_AimLoc(valueStr);
                            break;
                        }
                        case 5596:{     // 给 前下刀2 - 目标位置 属性赋值
                            setFD_knife_2_AimLoc(valueStr);
                            break;
                        }
                        case 5600:{     // 给 后上刀1 - 目标位置 属性赋值
                            setBD_knife_1_AimLoc(valueStr);
                            break;
                        }
                        case 5604:{     // 给 后上刀2 - 目标位置 属性赋值
                            setBD_knife_2_AimLoc(valueStr);
                            break;
                        }
                        case 5608:{     // 给 工进1 - 目标位置 属性赋值
                            setEntry_1_AimLoc(valueStr);
                            break;
                        }
                        case 5612:{     // 给 工进2 - 目标位置 属性赋值
                            setEntry_2_AimLoc(valueStr);
                            break;
                        }
                        case 5616:{     // 给 压辊 - 目标位置 属性赋值
                            setIdler_AimLoc(valueStr);
                            break;
                        }
                        case 5620:{     // 给 前上刀1 - 寸动距离 属性赋值
                            setFU_knife_1_PM(valueStr);
                            break;
                        }
                        case 5624:{     // 给 前上刀2 - 寸动距离 属性赋值
                            setFU_knife_2_PM(valueStr);
                            break;
                        }
                        case 5628:{     // 给 前上刀1辅工 - 寸动距离 属性赋值
                            setFU_knife_1_A_E_PM(valueStr);
                            break;
                        }
                        case 5632:{     // 给 前上刀2辅工 - 寸动距离 属性赋值
                            setFU_knife_2_A_E_PM(valueStr);
                            break;
                        }
                        case 5636:{     // 给 后上刀1 - 寸动距离 属性赋值
                            setBU_knife_1_PM(valueStr);
                            break;
                        }
                        case 5640:{     // 给 后上刀2 - 寸动距离 属性赋值
                            setBU_knife_2_PM(valueStr);
                            break;
                        }
                        case 5644:{     // 给 后上刀1辅工 - 寸动距离 属性赋值
                            setBU_knife_1_A_E_PM(valueStr);
                            break;
                        }
                        case 5648:{     // 给 后上刀2辅工 - 寸动距离 属性赋值
                            setBU_knife_2_A_E_PM(valueStr);
                            break;
                        }
                        case 5652:{     // 给 前下刀1 - 寸动距离 属性赋值
                            setFD_knife_1_PM(valueStr);
                            break;
                        }
                        case 5656:{     // 给 前下刀2 - 寸动距离 属性赋值
                            setFD_knife_2_PM(valueStr);
                            break;
                        }
                        case 5660:{     // 给 后上刀1 - 寸动距离 属性赋值
                            setBD_knife_1_PM(valueStr);
                            break;
                        }
                        case 5664:{     // 给 后上刀2 - 寸动距离 属性赋值
                            setBD_knife_2_PM(valueStr);
                            break;
                        }
                        case 5668:{     // 给 工进1 - 寸动距离 属性赋值
                            setEntry_1_PM(valueStr);
                            break;
                        }
                        case 5672:{     // 给 工进2 - 寸动距离 属性赋值
                            setEntry_2_PM(valueStr);
                            break;
                        }
                        case 5676:{     // 给 压辊 - 寸动距离 属性赋值
                            setIdler_PM(valueStr);
                            break;
                        }
                        case 4000: {    // 给 前上刀1 - 每转脉冲数 属性赋值
                            setFU_knife_1_PPR(valueStr);
                            break;
                        }
                        case 4004: {    // 给 前上刀1 - 减速比 属性赋值
                            setFU_knife_1_RR(valueStr);
                            break;
                        }
                        case 4008: {    // 给 前上刀1 - 每转位移量 属性赋值
                            setFU_knife_1_DPR(valueStr);
                            break;
                        }
                        case 4012: {    // 给 前上刀1 - 零点位置 属性赋值
                            setFU_knife_1_ZP(valueStr);
                            break;
                        }
                        case 4016: {    // 给 前上刀1 - 零点补偿 属性赋值
                            setFU_knife_1_ZOC(valueStr);
                            break;
                        }
                        case 4020: {    // 给 前上刀1 - 加速时间 属性赋值
                            setFU_knife_1_T_Acc(valueStr);
                            break;
                        }
                        case 4024: {    // 给 前上刀1 - 减速时间 属性赋值
                            setFU_knife_1_T_Dec(valueStr);
                            break;
                        }
                        case 4028: {    // 给 前上刀1 - 正极限 属性赋值
                            setFU_knife_1_PL(valueStr);
                            break;
                        }
                        case 4032: {    // 给 前上刀1 - 负极限 属性赋值
                            setFU_knife_1_NL(valueStr);
                            break;
                        }
                        case 4052: {    // 给 前上刀1 - 手动低速 属性赋值
                            setFU_knife_1_MLS(valueStr);
                            break;
                        }
                        case 4056: {    // 给 前上刀1 - 手动高速 属性赋值
                            setFU_knife_1_MHS(valueStr);
                            break;
                        }
                        case 4060: {    // 给 前上刀1 - 自动速度 属性赋值
                            setFU_knife_1_AS(valueStr);
                            break;
                        }
                        case 4064: {    // 给 前上刀1 - 实时速度 属性赋值
                            setFU_knife_1_RTS(valueStr);
                            break;
                        }
                        case 4100: {    // 给 前上刀2 - 每转脉冲数 属性赋值
                            setFU_knife_2_PPR(valueStr);
                            break;
                        }
                        case 4104: {    // 给 前上刀2 - 减速比 属性赋值
                            setFU_knife_2_RR(valueStr);
                            break;
                        }
                        case 4108: {    // 给 前上刀2 - 每转位移量 属性赋值
                            setFU_knife_2_DPR(valueStr);
                            break;
                        }
                        case 4112: {    // 给 前上刀2 - 零点位置 属性赋值
                            setFU_knife_2_ZP(valueStr);
                            break;
                        }
                        case 4116: {    // 给 前上刀2 - 零点补偿 属性赋值
                            setFU_knife_2_ZOC(valueStr);
                            break;
                        }
                        case 4120: {    // 给 前上刀2 - 加速时间 属性赋值
                            setFU_knife_2_T_Acc(valueStr);
                            break;
                        }
                        case 4124: {    // 给 前上刀2 - 减速时间 属性赋值
                            setFU_knife_2_T_Dec(valueStr);
                            break;
                        }
                        case 4128: {    // 给 前上刀2 - 正极限 属性赋值
                            setFU_knife_2_PL(valueStr);
                            break;
                        }
                        case 4132: {    // 给 前上刀2 - 负极限 属性赋值
                            setFU_knife_2_NL(valueStr);
                            break;
                        }
                        case 4152: {    // 给 前上刀2 - 手动低速 属性赋值
                            setFU_knife_2_MLS(valueStr);
                            break;
                        }
                        case 4156: {    // 给 前上刀2 - 手动高速 属性赋值
                            setFU_knife_2_MHS(valueStr);
                            break;
                        }
                        case 4160: {    // 给 前上刀2 - 自动速度 属性赋值
                            setFU_knife_2_AS(valueStr);
                            break;
                        }
                        case 4164: {    // 给 前上刀2 - 实时速度 属性赋值
                            setFU_knife_2_RTS(valueStr);
                            break;
                        }
                        case 4400: {    // 给 后上刀1 - 每转脉冲数 属性赋值
                            setBU_knife_1_PPR(valueStr);
                            break;
                        }
                        case 4404: {    // 给 后上刀1 - 减速比 属性赋值
                            setBU_knife_1_RR(valueStr);
                            break;
                        }
                        case 4408: {    // 给 后上刀1 - 每转位移量 属性赋值
                            setBU_knife_1_DPR(valueStr);
                            break;
                        }
                        case 4412: {    // 给 后上刀1 - 零点位置 属性赋值
                            setBU_knife_1_ZP(valueStr);
                            break;
                        }
                        case 4416: {    // 给 后上刀1 - 零点补偿 属性赋值
                            setBU_knife_1_ZOC(valueStr);
                            break;
                        }
                        case 4420: {    // 给 后上刀1 - 加速时间 属性赋值
                            setBU_knife_1_T_Acc(valueStr);
                            break;
                        }
                        case 4424: {    // 给 后上刀1 - 减速时间 属性赋值
                            setBU_knife_1_T_Dec(valueStr);
                            break;
                        }
                        case 4428: {    // 给 后上刀1 - 正极限 属性赋值
                            setBU_knife_1_PL(valueStr);
                            break;
                        }
                        case 4432: {    // 给 后上刀1 - 负极限 属性赋值
                            setBU_knife_1_NL(valueStr);
                            break;
                        }
                        case 4452: {    // 给 后上刀1 - 手动低速 属性赋值
                            setBU_knife_1_MLS(valueStr);
                            break;
                        }
                        case 4456: {    // 给 后上刀1 - 手动高速 属性赋值
                            setBU_knife_1_MHS(valueStr);
                            break;
                        }
                        case 4460: {    // 给 后上刀1 - 自动速度 属性赋值
                            setBU_knife_1_AS(valueStr);
                            break;
                        }
                        case 4464: {    // 给 后上刀1 - 实时速度 属性赋值
                            setBU_knife_1_RTS(valueStr);
                            break;
                        }
                        case 4500: {    // 给 后上刀2 - 每转脉冲数 属性赋值
                            setBU_knife_2_PPR(valueStr);
                            break;
                        }
                        case 4504: {    // 给 后上刀2 - 减速比 属性赋值
                            setBU_knife_2_RR(valueStr);
                            break;
                        }
                        case 4508: {    // 给 后上刀2 - 每转位移量 属性赋值
                            setBU_knife_2_DPR(valueStr);
                            break;
                        }
                        case 4512: {    // 给 后上刀2 - 零点位置 属性赋值
                            setBU_knife_2_ZP(valueStr);
                            break;
                        }
                        case 4516: {    // 给 后上刀2 - 零点补偿 属性赋值
                            setBU_knife_2_ZOC(valueStr);
                            break;
                        }
                        case 4520: {    // 给 后上刀2 - 加速时间 属性赋值
                            setBU_knife_2_T_Acc(valueStr);
                            break;
                        }
                        case 4524: {    // 给 后上刀2 - 减速时间 属性赋值
                            setBU_knife_2_T_Dec(valueStr);
                            break;
                        }
                        case 4528: {    // 给 后上刀2 - 正极限 属性赋值
                            setBU_knife_2_PL(valueStr);
                            break;
                        }
                        case 4532: {    // 给 后上刀2 - 负极限 属性赋值
                            setBU_knife_2_NL(valueStr);
                            break;
                        }
                        case 4552: {    // 给 后上刀2 - 手动低速 属性赋值
                            setBU_knife_2_MLS(valueStr);
                            break;
                        }
                        case 4556: {    // 给 后上刀2 - 手动高速 属性赋值
                            setBU_knife_2_MHS(valueStr);
                            break;
                        }
                        case 4560: {    // 给 后上刀2 - 自动速度 属性赋值
                            setBU_knife_2_AS(valueStr);
                            break;
                        }
                        case 4564: {    // 给 后上刀2 - 实时速度 属性赋值
                            setBU_knife_2_RTS(valueStr);
                            break;
                        }
                        case 4800: {    // 给 前下刀1 - 每转脉冲数 属性赋值
                            setFD_knife_1_PPR(valueStr);
                            break;
                        }
                        case 4804: {    // 给 前下刀1 - 减速比 属性赋值
                            setFD_knife_1_RR(valueStr);
                            break;
                        }
                        case 4808: {    // 给 前下刀1 - 每转位移量 属性赋值
                            setFD_knife_1_DPR(valueStr);
                            break;
                        }
                        case 4812: {    // 给 前下刀1 - 零点位置 属性赋值
                            setFD_knife_1_ZP(valueStr);
                            break;
                        }
                        case 4816: {    // 给 前下刀1 - 零点补偿 属性赋值
                            setFD_knife_1_ZOC(valueStr);
                            break;
                        }
                        case 4820: {    // 给 前下刀1 - 加速时间 属性赋值
                            setFD_knife_1_T_Acc(valueStr);
                            break;
                        }
                        case 4824: {    // 给 前下刀1 - 减速时间 属性赋值
                            setFD_knife_1_T_Dec(valueStr);
                            break;
                        }
                        case 4828: {    // 给 前下刀1 - 正极限 属性赋值
                            setFD_knife_1_PL(valueStr);
                            break;
                        }
                        case 4832: {    // 给 前下刀1 - 负极限 属性赋值
                            setFD_knife_1_NL(valueStr);
                            break;
                        }
                        case 4852: {    // 给 前下刀1 - 手动低速 属性赋值
                            setFD_knife_1_MLS(valueStr);
                            break;
                        }
                        case 4856: {    // 给 前下刀1 - 手动高速 属性赋值
                            setFD_knife_1_MHS(valueStr);
                            break;
                        }
                        case 4860: {    // 给 前下刀1 - 自动速度 属性赋值
                            setFD_knife_1_AS(valueStr);
                            break;
                        }
                        case 4864: {    // 给 前下刀1 - 实时速度 属性赋值
                            setFD_knife_1_RTS(valueStr);
                            break;
                        }
                        case 4900: {    // 给 前下刀2 - 每转脉冲数 属性赋值
                            setFD_knife_2_PPR(valueStr);
                            break;
                        }
                        case 4904: {    // 给 前下刀2 - 减速比 属性赋值
                            setFD_knife_2_RR(valueStr);
                            break;
                        }
                        case 4908: {    // 给 前下刀2 - 每转位移量 属性赋值
                            setFD_knife_2_DPR(valueStr);
                            break;
                        }
                        case 4912: {    // 给 前下刀2 - 零点位置 属性赋值
                            setFD_knife_2_ZP(valueStr);
                            break;
                        }
                        case 4916: {    // 给 前下刀2 - 零点补偿 属性赋值
                            setFD_knife_2_ZOC(valueStr);
                            break;
                        }
                        case 4920: {    // 给 前下刀2 - 加速时间 属性赋值
                            setFD_knife_2_T_Acc(valueStr);
                            break;
                        }
                        case 4924: {    // 给 前下刀2 - 减速时间 属性赋值
                            setFD_knife_2_T_Dec(valueStr);
                            break;
                        }
                        case 4928: {    // 给 前下刀2 - 正极限 属性赋值
                            setFD_knife_2_PL(valueStr);
                            break;
                        }
                        case 4932: {    // 给 前下刀2 - 负极限 属性赋值
                            setFD_knife_2_NL(valueStr);
                            break;
                        }
                        case 4952: {    // 给 前下刀2 - 手动低速 属性赋值
                            setFD_knife_2_MLS(valueStr);
                            break;
                        }
                        case 4956: {    // 给 前下刀2 - 手动高速 属性赋值
                            setFD_knife_2_MHS(valueStr);
                            break;
                        }
                        case 4960: {    // 给 前下刀2 - 自动速度 属性赋值
                            setFD_knife_2_AS(valueStr);
                            break;
                        }
                        case 4964: {    // 给 前下刀2 - 实时速度 属性赋值
                            setFD_knife_2_RTS(valueStr);
                            break;
                        }
                        case 5000: {    // 给 后下刀1 - 每转脉冲数 属性赋值
                            setBD_knife_1_PPR(valueStr);
                            break;
                        }
                        case 5004: {    // 给 后下刀1 - 减速比 属性赋值
                            setBD_knife_1_RR(valueStr);
                            break;
                        }
                        case 5008: {    // 给 后下刀1 - 每转位移量 属性赋值
                            setBD_knife_1_DPR(valueStr);
                            break;
                        }
                        case 5012: {    // 给 后下刀1 - 零点位置 属性赋值
                            setBD_knife_1_ZP(valueStr);
                            break;
                        }
                        case 5016: {    // 给 后下刀1 - 零点补偿 属性赋值
                            setBD_knife_1_ZOC(valueStr);
                            break;
                        }
                        case 5020: {    // 给 后下刀1 - 加速时间 属性赋值
                            setBD_knife_1_T_Acc(valueStr);
                            break;
                        }
                        case 5024: {    // 给 后下刀1 - 减速时间 属性赋值
                            setBD_knife_1_T_Dec(valueStr);
                            break;
                        }
                        case 5028: {    // 给 后下刀1 - 正极限 属性赋值
                            setBD_knife_1_PL(valueStr);
                            break;
                        }
                        case 5032: {    // 给 后下刀1 - 负极限 属性赋值
                            setBD_knife_1_NL(valueStr);
                            break;
                        }
                        case 5052: {    // 给 后下刀1 - 手动低速 属性赋值
                            setBD_knife_1_MLS(valueStr);
                            break;
                        }
                        case 5056: {    // 给 后下刀1 - 手动高速 属性赋值
                            setBD_knife_1_MHS(valueStr);
                            break;
                        }
                        case 5060: {    // 给 后下刀1 - 自动速度 属性赋值
                            setBD_knife_1_AS(valueStr);
                            break;
                        }
                        case 5064: {    // 给 后下刀1 - 实时速度 属性赋值
                            setBD_knife_1_RTS(valueStr);
                            break;
                        }
                        case 5100: {    // 给 后下刀2 - 每转脉冲数 属性赋值
                            setBD_knife_2_PPR(valueStr);
                            break;
                        }
                        case 5104: {    // 给 后下刀2 - 减速比 属性赋值
                            setBD_knife_2_RR(valueStr);
                            break;
                        }
                        case 5108: {    // 给 后下刀2 - 每转位移量 属性赋值
                            setBD_knife_2_DPR(valueStr);
                            break;
                        }
                        case 5112: {    // 给 后下刀2 - 零点位置 属性赋值
                            setBD_knife_2_ZP(valueStr);
                            break;
                        }
                        case 5116: {    // 给 后下刀2 - 零点补偿 属性赋值
                            setBD_knife_2_ZOC(valueStr);
                            break;
                        }
                        case 5120: {    // 给 后下刀2 - 加速时间 属性赋值
                            setBD_knife_2_T_Acc(valueStr);
                            break;
                        }
                        case 5124: {    // 给 后下刀2 - 减速时间 属性赋值
                            setBD_knife_2_T_Dec(valueStr);
                            break;
                        }
                        case 5128: {    // 给 后下刀2 - 正极限 属性赋值
                            setBD_knife_2_PL(valueStr);
                            break;
                        }
                        case 5132: {    // 给 后下刀2 - 负极限 属性赋值
                            setBD_knife_2_NL(valueStr);
                            break;
                        }
                        case 5152: {    // 给 后下刀2 - 手动低速 属性赋值
                            setBD_knife_2_MLS(valueStr);
                            break;
                        }
                        case 5156: {    // 给 后下刀2 - 手动高速 属性赋值
                            setBD_knife_2_MHS(valueStr);
                            break;
                        }
                        case 5160: {    // 给 后下刀2 - 自动速度 属性赋值
                            setBD_knife_2_AS(valueStr);
                            break;
                        }
                        case 5164: {    // 给 后下刀2 - 实时速度 属性赋值
                            setBD_knife_2_RTS(valueStr);
                            break;
                        }
                        case 4200: {    // 给 前上刀1辅工 - 每转脉冲数 属性赋值
                            setFU_knife_1_A_E_PPR(valueStr);
                            break;
                        }
                        case 4204: {    // 给 前上刀1辅工 - 减速比 属性赋值
                            setFU_knife_1_A_E_RR(valueStr);
                            break;
                        }
                        case 4208: {    // 给 前上刀1辅工 - 每转位移量 属性赋值
                            setFU_knife_1_A_E_DPR(valueStr);
                            break;
                        }
                        case 4212: {    // 给 前上刀1辅工 - 零点位置 属性赋值
                            setFU_knife_1_A_E_ZP(valueStr);
                            break;
                        }
                        case 4216: {    // 给 前上刀1辅工 - 零点补偿 属性赋值
                            setFU_knife_1_A_E_ZOC(valueStr);
                            break;
                        }
                        case 4220: {    // 给 前上刀1辅工 - 加速时间 属性赋值
                            setFU_knife_1_A_E_T_Acc(valueStr);
                            break;
                        }
                        case 4224: {    // 给 前上刀1辅工 - 减速时间 属性赋值
                            setFU_knife_1_A_E_T_Dec(valueStr);
                            break;
                        }
                        case 4228: {    // 给 前上刀1辅工 - 正极限 属性赋值
                            setFU_knife_1_A_E_PL(valueStr);
                            break;
                        }
                        case 4232: {    // 给 前上刀1辅工 - 负极限 属性赋值
                            setFU_knife_1_A_E_NL(valueStr);
                            break;
                        }
                        case 4252: {    // 给 前上刀1辅工 - 手动低速 属性赋值
                            setFU_knife_1_A_E_MLS(valueStr);
                            break;
                        }
                        case 4256: {    // 给 前上刀1辅工 - 手动高速 属性赋值
                            setFU_knife_1_A_E_MHS(valueStr);
                            break;
                        }
                        case 4260: {    // 给 前上刀1辅工 - 自动速度 属性赋值
                            setFU_knife_1_A_E_AS(valueStr);
                            break;
                        }
                        case 4264: {    // 给 前上刀1辅工 - 实时速度 属性赋值
                            setFU_knife_1_A_E_RTS(valueStr);
                            break;
                        }
                        case 4300: {    // 给 前上刀2辅工 - 每转脉冲数 属性赋值
                            setFU_knife_2_A_E_PPR(valueStr);
                            break;
                        }
                        case 4304: {    // 给 前上刀2辅工 - 减速比 属性赋值
                            setFU_knife_2_A_E_RR(valueStr);
                            break;
                        }
                        case 4308: {    // 给 前上刀2辅工 - 每转位移量 属性赋值
                            setFU_knife_2_A_E_DPR(valueStr);
                            break;
                        }
                        case 4312: {    // 给 前上刀2辅工 - 零点位置 属性赋值
                            setFU_knife_2_A_E_ZP(valueStr);
                            break;
                        }
                        case 4316: {    // 给 前上刀2辅工 - 零点补偿 属性赋值
                            setFU_knife_2_A_E_ZOC(valueStr);
                            break;
                        }
                        case 4320: {    // 给 前上刀2辅工 - 加速时间 属性赋值
                            setFU_knife_2_A_E_T_Acc(valueStr);
                            break;
                        }
                        case 4324: {    // 给 前上刀2辅工 - 减速时间 属性赋值
                            setFU_knife_2_A_E_T_Dec(valueStr);
                            break;
                        }
                        case 4328: {    // 给 前上刀2辅工 - 正极限 属性赋值
                            setFU_knife_2_A_E_PL(valueStr);
                            break;
                        }
                        case 4332: {    // 给 前上刀2辅工 - 负极限 属性赋值
                            setFU_knife_2_A_E_NL(valueStr);
                            break;
                        }
                        case 4352: {    // 给 前上刀2辅工 - 手动低速 属性赋值
                            setFU_knife_2_A_E_MLS(valueStr);
                            break;
                        }
                        case 4356: {    // 给 前上刀2辅工 - 手动高速 属性赋值
                            setFU_knife_2_A_E_MHS(valueStr);
                            break;
                        }
                        case 4360: {    // 给 前上刀2辅工 - 自动速度 属性赋值
                            setFU_knife_2_A_E_AS(valueStr);
                            break;
                        }
                        case 4364: {    // 给 前上刀2辅工 - 实时速度 属性赋值
                            setFU_knife_2_A_E_RTS(valueStr);
                            break;
                        }
                        case 4600: {    // 给 后上刀1辅工 - 每转脉冲数 属性赋值
                            setBU_knife_1_A_E_PPR(valueStr);
                            break;
                        }
                        case 4604: {    // 给 后上刀1辅工 - 减速比 属性赋值
                            setBU_knife_1_A_E_RR(valueStr);
                            break;
                        }
                        case 4608: {    // 给 后上刀1辅工 - 每转位移量 属性赋值
                            setBU_knife_1_A_E_DPR(valueStr);
                            break;
                        }
                        case 4612: {    // 给 后上刀1辅工 - 零点位置 属性赋值
                            setBU_knife_1_A_E_ZP(valueStr);
                            break;
                        }
                        case 4616: {    // 给 后上刀1辅工 - 零点补偿 属性赋值
                            setBU_knife_1_A_E_ZOC(valueStr);
                            break;
                        }
                        case 4620: {    // 给 后上刀1辅工 - 加速时间 属性赋值
                            setBU_knife_1_A_E_T_Acc(valueStr);
                            break;
                        }
                        case 4624: {    // 给 后上刀1辅工 - 减速时间 属性赋值
                            setBU_knife_1_A_E_T_Dec(valueStr);
                            break;
                        }
                        case 4628: {    // 给 后上刀1辅工 - 正极限 属性赋值
                            setBU_knife_1_A_E_PL(valueStr);
                            break;
                        }
                        case 4632: {    // 给 后上刀1辅工 - 负极限 属性赋值
                            setBU_knife_1_A_E_NL(valueStr);
                            break;
                        }
                        case 4652: {    // 给 后上刀1辅工 - 手动低速 属性赋值
                            setBU_knife_1_A_E_MLS(valueStr);
                            break;
                        }
                        case 4656: {    // 给 后上刀1辅工 - 手动高速 属性赋值
                            setBU_knife_1_A_E_MHS(valueStr);
                            break;
                        }
                        case 4660: {    // 给 后上刀1辅工 - 自动速度 属性赋值
                            setBU_knife_1_A_E_AS(valueStr);
                            break;
                        }
                        case 4664: {    // 给 后上刀1辅工 - 实时速度 属性赋值
                            setBU_knife_1_A_E_RTS(valueStr);
                            break;
                        }
                        case 4700: {    // 给 后上刀2辅工 - 每转脉冲数 属性赋值
                            setBU_knife_2_A_E_PPR(valueStr);
                            break;
                        }
                        case 4704: {    // 给 后上刀2辅工 - 减速比 属性赋值
                            setBU_knife_2_A_E_RR(valueStr);
                            break;
                        }
                        case 4708: {    // 给 后上刀2辅工 - 每转位移量 属性赋值
                            setBU_knife_2_A_E_DPR(valueStr);
                            break;
                        }
                        case 4712: {    // 给 后上刀2辅工 - 零点位置 属性赋值
                            setBU_knife_2_A_E_ZP(valueStr);
                            break;
                        }
                        case 4716: {    // 给 后上刀2辅工 - 零点补偿 属性赋值
                            setBU_knife_2_A_E_ZOC(valueStr);
                            break;
                        }
                        case 4720: {    // 给 后上刀2辅工 - 加速时间 属性赋值
                            setBU_knife_2_A_E_T_Acc(valueStr);
                            break;
                        }
                        case 4724: {    // 给 后上刀2辅工 - 减速时间 属性赋值
                            setBU_knife_2_A_E_T_Dec(valueStr);
                            break;
                        }
                        case 4728: {    // 给 后上刀2辅工 - 正极限 属性赋值
                            setBU_knife_2_A_E_PL(valueStr);
                            break;
                        }
                        case 4732: {    // 给 后上刀2辅工 - 负极限 属性赋值
                            setBU_knife_2_A_E_NL(valueStr);
                            break;
                        }
                        case 4752: {    // 给 后上刀2辅工 - 手动低速 属性赋值
                            setBU_knife_2_A_E_MLS(valueStr);
                            break;
                        }
                        case 4756: {    // 给 后上刀2辅工 - 手动高速 属性赋值
                            setBU_knife_2_A_E_MHS(valueStr);
                            break;
                        }
                        case 4760: {    // 给 后上刀2辅工 - 自动速度 属性赋值
                            setBU_knife_2_A_E_AS(valueStr);
                            break;
                        }
                        case 4764: {    // 给 后上刀2辅工 - 实时速度 属性赋值
                            setBU_knife_2_A_E_RTS(valueStr);
                            break;
                        }
                        case 5200: {    // 给 工进1 - 每转脉冲数 属性赋值
                            setEntry_1_PPR(valueStr);
                            break;
                        }
                        case 5204: {    // 给 工进1 - 减速比 属性赋值
                            setEntry_1_RR(valueStr);
                            break;
                        }
                        case 5208: {    // 给 工进1 - 每转位移量 属性赋值
                            setEntry_1_DPR(valueStr);
                            break;
                        }
                        case 5212: {    // 给 工进1 - 零点位置 属性赋值
                            setEntry_1_ZP(valueStr);
                            break;
                        }
                        case 5216: {    // 给 工进1 - 零点补偿 属性赋值
                            setEntry_1_ZOC(valueStr);
                            break;
                        }
                        case 5220: {    // 给 工进1 - 加速时间 属性赋值
                            setEntry_1_T_Acc(valueStr);
                            break;
                        }
                        case 5224: {    // 给 工进1 - 减速时间 属性赋值
                            setEntry_1_T_Dec(valueStr);
                            break;
                        }
                        case 5228: {    // 给 工进1 - 正极限 属性赋值
                            setEntry_1_PL(valueStr);
                            break;
                        }
                        case 5232: {    // 给 工进1 - 负极限 属性赋值
                            setEntry_1_NL(valueStr);
                            break;
                        }
                        case 5252: {    // 给 工进1 - 手动低速 属性赋值
                            setEntry_1_MLS(valueStr);
                            break;
                        }
                        case 5256: {    // 给 工进1 - 手动高速 属性赋值
                            setEntry_1_MHS(valueStr);
                            break;
                        }
                        case 5260: {    // 给 工进1 - 自动速度 属性赋值
                            setEntry_1_AS(valueStr);
                            break;
                        }
                        case 5264: {    // 给 工进1 - 实时速度 属性赋值
                            setEntry_1_RTS(valueStr);
                            break;
                        }
                        case 5300: {    // 给 工进2 - 每转脉冲数 属性赋值
                            setEntry_2_PPR(valueStr);
                            break;
                        }
                        case 5304: {    // 给 工进2 - 减速比 属性赋值
                            setEntry_2_RR(valueStr);
                            break;
                        }
                        case 5308: {    // 给 工进2 - 每转位移量 属性赋值
                            setEntry_2_DPR(valueStr);
                            break;
                        }
                        case 5312: {    // 给 工进2 - 零点位置 属性赋值
                            setEntry_2_ZP(valueStr);
                            break;
                        }
                        case 5316: {    // 给 工进2 - 零点补偿 属性赋值
                            setEntry_2_ZOC(valueStr);
                            break;
                        }
                        case 5320: {    // 给 工进2 - 加速时间 属性赋值
                            setEntry_2_T_Acc(valueStr);
                            break;
                        }
                        case 5324: {    // 给 工进2 - 减速时间 属性赋值
                            setEntry_2_T_Dec(valueStr);
                            break;
                        }
                        case 5328: {    // 给 工进2 - 正极限 属性赋值
                            setEntry_2_PL(valueStr);
                            break;
                        }
                        case 5332: {    // 给 工进2 - 负极限 属性赋值
                            setEntry_2_NL(valueStr);
                            break;
                        }
                        case 5352: {    // 给 工进2 - 手动低速 属性赋值
                            setEntry_2_MLS(valueStr);
                            break;
                        }
                        case 5356: {    // 给 工进2 - 手动高速 属性赋值
                            setEntry_2_MHS(valueStr);
                            break;
                        }
                        case 5360: {    // 给 工进2 - 自动速度 属性赋值
                            setEntry_2_AS(valueStr);
                            break;
                        }
                        case 5364: {    // 给 工进2 - 实时速度 属性赋值
                            setEntry_2_RTS(valueStr);
                            break;
                        }
                        case 5400: {    // 给 压辊 - 每转脉冲数 属性赋值
                            setIdler_PPR(valueStr);
                            break;
                        }
                        case 5404: {    // 给 压辊 - 每转脉冲数 属性赋值
                            setIdler_RR(valueStr);
                            break;
                        }
                        case 5408: {    // 给 压辊 - 每转脉冲数 属性赋值
                            setIdler_DPR(valueStr);
                            break;
                        }
                        case 5412: {    // 给 压辊 - 每转脉冲数 属性赋值
                            setIdler_ZP(valueStr);
                            break;
                        }
                        case 5416: {    // 给 压辊 - 每转脉冲数 属性赋值
                            setIdler_ZOC(valueStr);
                            break;
                        }
                        case 5420: {    // 给 压辊 - 每转脉冲数 属性赋值
                            setIdler_T_Acc(valueStr);
                            break;
                        }
                        case 5424: {    // 给 压辊 - 每转脉冲数 属性赋值
                            setIdler_T_Dec(valueStr);
                            break;
                        }
                        case 5428: {    // 给 压辊 - 每转脉冲数 属性赋值
                            setIdler_PL(valueStr);
                            break;
                        }
                        case 5432: {    // 给 压辊 - 每转脉冲数 属性赋值
                            setIdler_NL(valueStr);
                            break;
                        }
                        case 5452: {    // 给 压辊 - 每转脉冲数 属性赋值
                            setIdler_MLS(valueStr);
                            break;
                        }
                        case 5456: {    // 给 压辊 - 每转脉冲数 属性赋值
                            setIdler_MHS(valueStr);
                            break;
                        }
                        case 5460: {    // 给 压辊 - 每转脉冲数 属性赋值
                            setIdler_AS(valueStr);
                            break;
                        }
                        case 5464: {    // 给 压辊 - 每转脉冲数 属性赋值
                            setIdler_RTS(valueStr);
                            break;
                        }
                        case 5740:{     // 给 刀盘最大距离 属性赋值
                            setknife_Max_Distance(valueStr);
                            break;
                        }
                        case 5744:{     // 给 刀盘最小距离 属性赋值
                            setknife_Min_Distance(valueStr);
                            break;
                        }
                        default:
                            qDebug() << "未处理的寄存器地址:" << addr;
                            break;
                        }
                    } else {
                        qDebug() << "读取保持寄存器32失败:" << "地址:" << addr << "错误:" << reply->errorString();
                    }
                    reply->deleteLater();
                });
            } else {
                reply->deleteLater();
            }
        } else {
            qDebug() << "发送读取请求失败:" << "地址:" << addr;
        }

    });
}

void ModbusTCP_Class::scanner_write_Aim_Location(QByteArray &recvData)
{
    qDebug()<<"从扫码枪接收到数据 : "<<QString(recvData);

    QStringList result = QString(recvData).split(',');

    qDebug()<<"接收结果长度: "<<result.length();

    if(result.length() >= 15)
    {
        write_into_tcp_Hold_15_Parameters(result.at(0),
                                          result.at(1),
                                          result.at(2),
                                          result.at(3),
                                          result.at(4),
                                          result.at(5),
                                          result.at(6),
                                          result.at(7),
                                          result.at(8),
                                          result.at(9),
                                          result.at(10),
                                          result.at(11),
                                          result.at(12),
                                          result.at(13),
                                          result.at(14));

        // 使用QTimer::singleShot实现100ms延迟执行
        QTimer::singleShot(100, this, [this]() {
            read_Aimlocation_PM_Hold();
        });
    }
    else
    {
        return;
    }



}

QString ModbusTCP_Class::FU_knife_1_CurrLoc() const
{
    return m_FU_knife_1_CurrLoc;
}

void ModbusTCP_Class::setFU_knife_1_CurrLoc(const QString &newFU_knife_1_CurrLoc)
{
    if (m_FU_knife_1_CurrLoc == newFU_knife_1_CurrLoc)
        return;
    m_FU_knife_1_CurrLoc = newFU_knife_1_CurrLoc;
    emit FU_knife_1_CurrLocChanged();
}

QString ModbusTCP_Class::FU_knife_2_CurrLoc() const
{
    return m_FU_knife_2_CurrLoc;
}

void ModbusTCP_Class::setFU_knife_2_CurrLoc(const QString &newFU_knife_2_CurrLoc)
{
    if (m_FU_knife_2_CurrLoc == newFU_knife_2_CurrLoc)
        return;
    m_FU_knife_2_CurrLoc = newFU_knife_2_CurrLoc;
    emit FU_knife_2_CurrLocChanged();
}

QString ModbusTCP_Class::FU_knife_1_A_E_CurrLoc() const
{
    return m_FU_knife_1_A_E_CurrLoc;
}

void ModbusTCP_Class::setFU_knife_1_A_E_CurrLoc(const QString &newFU_knife_1_A_E_CurrLoc)
{
    if (m_FU_knife_1_A_E_CurrLoc == newFU_knife_1_A_E_CurrLoc)
        return;
    m_FU_knife_1_A_E_CurrLoc = newFU_knife_1_A_E_CurrLoc;
    emit FU_knife_1_A_E_CurrLocChanged();
}

QString ModbusTCP_Class::FU_knife_2_A_E_CurrLoc() const
{
    return m_FU_knife_2_A_E_CurrLoc;
}

void ModbusTCP_Class::setFU_knife_2_A_E_CurrLoc(const QString &newFU_knife_2_A_E_CurrLoc)
{
    if (m_FU_knife_2_A_E_CurrLoc == newFU_knife_2_A_E_CurrLoc)
        return;
    m_FU_knife_2_A_E_CurrLoc = newFU_knife_2_A_E_CurrLoc;
    emit FU_knife_2_A_E_CurrLocChanged();
}

QString ModbusTCP_Class::BU_knife_1_CurrLoc() const
{
    return m_BU_knife_1_CurrLoc;
}

void ModbusTCP_Class::setBU_knife_1_CurrLoc(const QString &newBU_knife_1_CurrLoc)
{
    if (m_BU_knife_1_CurrLoc == newBU_knife_1_CurrLoc)
        return;
    m_BU_knife_1_CurrLoc = newBU_knife_1_CurrLoc;
    emit BU_knife_1_CurrLocChanged();
}

QString ModbusTCP_Class::BU_knife_2_CurrLoc() const
{
    return m_BU_knife_2_CurrLoc;
}

void ModbusTCP_Class::setBU_knife_2_CurrLoc(const QString &newBU_knife_2_CurrLoc)
{
    if (m_BU_knife_2_CurrLoc == newBU_knife_2_CurrLoc)
        return;
    m_BU_knife_2_CurrLoc = newBU_knife_2_CurrLoc;
    emit BU_knife_2_CurrLocChanged();
}

QString ModbusTCP_Class::BU_knife_1_A_E_CurrLoc() const
{
    return m_BU_knife_1_A_E_CurrLoc;
}

void ModbusTCP_Class::setBU_knife_1_A_E_CurrLoc(const QString &newBU_knife_1_A_E_CurrLoc)
{
    if (m_BU_knife_1_A_E_CurrLoc == newBU_knife_1_A_E_CurrLoc)
        return;
    m_BU_knife_1_A_E_CurrLoc = newBU_knife_1_A_E_CurrLoc;
    emit BU_knife_1_A_E_CurrLocChanged();
}

QString ModbusTCP_Class::BU_knife_2_A_E_CurrLoc() const
{
    return m_BU_knife_2_A_E_CurrLoc;
}

void ModbusTCP_Class::setBU_knife_2_A_E_CurrLoc(const QString &newBU_knife_2_A_E_CurrLoc)
{
    if (m_BU_knife_2_A_E_CurrLoc == newBU_knife_2_A_E_CurrLoc)
        return;
    m_BU_knife_2_A_E_CurrLoc = newBU_knife_2_A_E_CurrLoc;
    emit BU_knife_2_A_E_CurrLocChanged();
}

QString ModbusTCP_Class::FD_knife_1_CurrLoc() const
{
    return m_FD_knife_1_CurrLoc;
}

void ModbusTCP_Class::setFD_knife_1_CurrLoc(const QString &newFD_knife_1_CurrLoc)
{
    if (m_FD_knife_1_CurrLoc == newFD_knife_1_CurrLoc)
        return;
    m_FD_knife_1_CurrLoc = newFD_knife_1_CurrLoc;
    emit FD_knife_1_CurrLocChanged();
}

QString ModbusTCP_Class::FD_knife_2_CurrLoc() const
{
    return m_FD_knife_2_CurrLoc;
}

void ModbusTCP_Class::setFD_knife_2_CurrLoc(const QString &newFD_knife_2_CurrLoc)
{
    if (m_FD_knife_2_CurrLoc == newFD_knife_2_CurrLoc)
        return;
    m_FD_knife_2_CurrLoc = newFD_knife_2_CurrLoc;
    emit FD_knife_2_CurrLocChanged();
}

QString ModbusTCP_Class::BD_knife_1_CurrLoc() const
{
    return m_BD_knife_1_CurrLoc;
}

void ModbusTCP_Class::setBD_knife_1_CurrLoc(const QString &newBD_knife_1_CurrLoc)
{
    if (m_BD_knife_1_CurrLoc == newBD_knife_1_CurrLoc)
        return;
    m_BD_knife_1_CurrLoc = newBD_knife_1_CurrLoc;
    emit BD_knife_1_CurrLocChanged();
}

QString ModbusTCP_Class::BD_knife_2_CurrLoc() const
{
    return m_BD_knife_2_CurrLoc;
}

void ModbusTCP_Class::setBD_knife_2_CurrLoc(const QString &newBD_knife_2_CurrLoc)
{
    if (m_BD_knife_2_CurrLoc == newBD_knife_2_CurrLoc)
        return;
    m_BD_knife_2_CurrLoc = newBD_knife_2_CurrLoc;
    emit BD_knife_2_CurrLocChanged();
}

QString ModbusTCP_Class::Entry_1_CurrLoc() const
{
    return m_Entry_1_CurrLoc;
}

void ModbusTCP_Class::setEntry_1_CurrLoc(const QString &newEntry_1_CurrLoc)
{
    if (m_Entry_1_CurrLoc == newEntry_1_CurrLoc)
        return;
    m_Entry_1_CurrLoc = newEntry_1_CurrLoc;
    emit Entry_1_CurrLocChanged();
}

QString ModbusTCP_Class::Entry_2_CurrLoc() const
{
    return m_Entry_2_CurrLoc;
}

void ModbusTCP_Class::setEntry_2_CurrLoc(const QString &newEntry_2_CurrLoc)
{
    if (m_Entry_2_CurrLoc == newEntry_2_CurrLoc)
        return;
    m_Entry_2_CurrLoc = newEntry_2_CurrLoc;
    emit Entry_2_CurrLocChanged();
}

QString ModbusTCP_Class::Idler_CurrLoc() const
{
    return m_Idler_CurrLoc;
}

void ModbusTCP_Class::setIdler_CurrLoc(const QString &newIdler_CurrLoc)
{
    if (m_Idler_CurrLoc == newIdler_CurrLoc)
        return;
    m_Idler_CurrLoc = newIdler_CurrLoc;
    emit Idler_CurrLocChanged();
}

QString ModbusTCP_Class::FU_knife_1_AimLoc() const
{
    return m_FU_knife_1_AimLoc;
}

void ModbusTCP_Class::setFU_knife_1_AimLoc(const QString &newFU_knife_1_AimLoc)
{
    if (m_FU_knife_1_AimLoc == newFU_knife_1_AimLoc)
        return;
    m_FU_knife_1_AimLoc = newFU_knife_1_AimLoc;
    emit FU_knife_1_AimLocChanged();
}

QString ModbusTCP_Class::FU_knife_2_AimLoc() const
{
    return m_FU_knife_2_AimLoc;
}

void ModbusTCP_Class::setFU_knife_2_AimLoc(const QString &newFU_knife_2_AimLoc)
{
    if (m_FU_knife_2_AimLoc == newFU_knife_2_AimLoc)
        return;
    m_FU_knife_2_AimLoc = newFU_knife_2_AimLoc;
    emit FU_knife_2_AimLocChanged();
}

QString ModbusTCP_Class::FU_knife_1_A_E_AimLoc() const
{
    return m_FU_knife_1_A_E_AimLoc;
}

void ModbusTCP_Class::setFU_knife_1_A_E_AimLoc(const QString &newFU_knife_1_A_E_AimLoc)
{
    if (m_FU_knife_1_A_E_AimLoc == newFU_knife_1_A_E_AimLoc)
        return;
    m_FU_knife_1_A_E_AimLoc = newFU_knife_1_A_E_AimLoc;
    emit FU_knife_1_A_E_AimLocChanged();
}

QString ModbusTCP_Class::FU_knife_2_A_E_AimLoc() const
{
    return m_FU_knife_2_A_E_AimLoc;
}

void ModbusTCP_Class::setFU_knife_2_A_E_AimLoc(const QString &newFU_knife_2_A_E_AimLoc)
{
    if (m_FU_knife_2_A_E_AimLoc == newFU_knife_2_A_E_AimLoc)
        return;
    m_FU_knife_2_A_E_AimLoc = newFU_knife_2_A_E_AimLoc;
    emit FU_knife_2_A_E_AimLocChanged();
}

QString ModbusTCP_Class::BU_knife_1_AimLoc() const
{
    return m_BU_knife_1_AimLoc;
}

void ModbusTCP_Class::setBU_knife_1_AimLoc(const QString &newBU_knife_1_AimLoc)
{
    if (m_BU_knife_1_AimLoc == newBU_knife_1_AimLoc)
        return;
    m_BU_knife_1_AimLoc = newBU_knife_1_AimLoc;
    emit BU_knife_1_AimLocChanged();
}

QString ModbusTCP_Class::BU_knife_2_AimLoc() const
{
    return m_BU_knife_2_AimLoc;
}

void ModbusTCP_Class::setBU_knife_2_AimLoc(const QString &newBU_knife_2_AimLoc)
{
    if (m_BU_knife_2_AimLoc == newBU_knife_2_AimLoc)
        return;
    m_BU_knife_2_AimLoc = newBU_knife_2_AimLoc;
    emit BU_knife_2_AimLocChanged();
}

QString ModbusTCP_Class::BU_knife_1_A_E_AimLoc() const
{
    return m_BU_knife_1_A_E_AimLoc;
}

void ModbusTCP_Class::setBU_knife_1_A_E_AimLoc(const QString &newBU_knife_1_A_E_AimLoc)
{
    if (m_BU_knife_1_A_E_AimLoc == newBU_knife_1_A_E_AimLoc)
        return;
    m_BU_knife_1_A_E_AimLoc = newBU_knife_1_A_E_AimLoc;
    emit BU_knife_1_A_E_AimLocChanged();
}

QString ModbusTCP_Class::BU_knife_2_A_E_AimLoc() const
{
    return m_BU_knife_2_A_E_AimLoc;
}

void ModbusTCP_Class::setBU_knife_2_A_E_AimLoc(const QString &newBU_knife_2_A_E_AimLoc)
{
    if (m_BU_knife_2_A_E_AimLoc == newBU_knife_2_A_E_AimLoc)
        return;
    m_BU_knife_2_A_E_AimLoc = newBU_knife_2_A_E_AimLoc;
    emit BU_knife_2_A_E_AimLocChanged();
}

QString ModbusTCP_Class::FD_knife_1_AimLoc() const
{
    return m_FD_knife_1_AimLoc;
}

void ModbusTCP_Class::setFD_knife_1_AimLoc(const QString &newFD_knife_1_AimLoc)
{
    if (m_FD_knife_1_AimLoc == newFD_knife_1_AimLoc)
        return;
    m_FD_knife_1_AimLoc = newFD_knife_1_AimLoc;
    emit FD_knife_1_AimLocChanged();
}

QString ModbusTCP_Class::FD_knife_2_AimLoc() const
{
    return m_FD_knife_2_AimLoc;
}

void ModbusTCP_Class::setFD_knife_2_AimLoc(const QString &newFD_knife_2_AimLoc)
{
    if (m_FD_knife_2_AimLoc == newFD_knife_2_AimLoc)
        return;
    m_FD_knife_2_AimLoc = newFD_knife_2_AimLoc;
    emit FD_knife_2_AimLocChanged();
}

QString ModbusTCP_Class::BD_knife_1_AimLoc() const
{
    return m_BD_knife_1_AimLoc;
}

void ModbusTCP_Class::setBD_knife_1_AimLoc(const QString &newBD_knife_1_AimLoc)
{
    if (m_BD_knife_1_AimLoc == newBD_knife_1_AimLoc)
        return;
    m_BD_knife_1_AimLoc = newBD_knife_1_AimLoc;
    emit BD_knife_1_AimLocChanged();
}

QString ModbusTCP_Class::BD_knife_2_AimLoc() const
{
    return m_BD_knife_2_AimLoc;
}

void ModbusTCP_Class::setBD_knife_2_AimLoc(const QString &newBD_knife_2_AimLoc)
{
    if (m_BD_knife_2_AimLoc == newBD_knife_2_AimLoc)
        return;
    m_BD_knife_2_AimLoc = newBD_knife_2_AimLoc;
    emit BD_knife_2_AimLocChanged();
}

QString ModbusTCP_Class::Entry_1_AimLoc() const
{
    return m_Entry_1_AimLoc;
}

void ModbusTCP_Class::setEntry_1_AimLoc(const QString &newEntry_1_AimLoc)
{
    if (m_Entry_1_AimLoc == newEntry_1_AimLoc)
        return;
    m_Entry_1_AimLoc = newEntry_1_AimLoc;
    emit Entry_1_AimLocChanged();
}

QString ModbusTCP_Class::Entry_2_AimLoc() const
{
    return m_Entry_2_AimLoc;
}

void ModbusTCP_Class::setEntry_2_AimLoc(const QString &newEntry_2_AimLoc)
{
    if (m_Entry_2_AimLoc == newEntry_2_AimLoc)
        return;
    m_Entry_2_AimLoc = newEntry_2_AimLoc;
    emit Entry_2_AimLocChanged();
}

QString ModbusTCP_Class::Idler_AimLoc() const
{
    return m_Idler_AimLoc;
}

void ModbusTCP_Class::setIdler_AimLoc(const QString &newIdler_AimLoc)
{
    if (m_Idler_AimLoc == newIdler_AimLoc)
        return;
    m_Idler_AimLoc = newIdler_AimLoc;
    emit Idler_AimLocChanged();
}

QString ModbusTCP_Class::FU_knife_1_PM() const
{
    return m_FU_knife_1_PM;
}

void ModbusTCP_Class::setFU_knife_1_PM(const QString &newFU_knife_1_PM)
{
    if (m_FU_knife_1_PM == newFU_knife_1_PM)
        return;
    m_FU_knife_1_PM = newFU_knife_1_PM;
    emit FU_knife_1_PMChanged();
}

QString ModbusTCP_Class::FU_knife_2_PM() const
{
    return m_FU_knife_2_PM;
}

void ModbusTCP_Class::setFU_knife_2_PM(const QString &newFU_knife_2_PM)
{
    if (m_FU_knife_2_PM == newFU_knife_2_PM)
        return;
    m_FU_knife_2_PM = newFU_knife_2_PM;
    emit FU_knife_2_PMChanged();
}

QString ModbusTCP_Class::FU_knife_1_A_E_PM() const
{
    return m_FU_knife_1_A_E_PM;
}

void ModbusTCP_Class::setFU_knife_1_A_E_PM(const QString &newFU_knife_1_A_E_PM)
{
    if (m_FU_knife_1_A_E_PM == newFU_knife_1_A_E_PM)
        return;
    m_FU_knife_1_A_E_PM = newFU_knife_1_A_E_PM;
    emit FU_knife_1_A_E_PMChanged();
}

QString ModbusTCP_Class::FU_knife_2_A_E_PM() const
{
    return m_FU_knife_2_A_E_PM;
}

void ModbusTCP_Class::setFU_knife_2_A_E_PM(const QString &newFU_knife_2_A_E_PM)
{
    if (m_FU_knife_2_A_E_PM == newFU_knife_2_A_E_PM)
        return;
    m_FU_knife_2_A_E_PM = newFU_knife_2_A_E_PM;
    emit FU_knife_2_A_E_PMChanged();
}

QString ModbusTCP_Class::BU_knife_1_PM() const
{
    return m_BU_knife_1_PM;
}

void ModbusTCP_Class::setBU_knife_1_PM(const QString &newBU_knife_1_PM)
{
    if (m_BU_knife_1_PM == newBU_knife_1_PM)
        return;
    m_BU_knife_1_PM = newBU_knife_1_PM;
    emit BU_knife_1_PMChanged();
}

QString ModbusTCP_Class::BU_knife_2_PM() const
{
    return m_BU_knife_2_PM;
}

void ModbusTCP_Class::setBU_knife_2_PM(const QString &newBU_knife_2_PM)
{
    if (m_BU_knife_2_PM == newBU_knife_2_PM)
        return;
    m_BU_knife_2_PM = newBU_knife_2_PM;
    emit BU_knife_2_PMChanged();
}

QString ModbusTCP_Class::BU_knife_1_A_E_PM() const
{
    return m_BU_knife_1_A_E_PM;
}

void ModbusTCP_Class::setBU_knife_1_A_E_PM(const QString &newBU_knife_1_A_E_PM)
{
    if (m_BU_knife_1_A_E_PM == newBU_knife_1_A_E_PM)
        return;
    m_BU_knife_1_A_E_PM = newBU_knife_1_A_E_PM;
    emit BU_knife_1_A_E_PMChanged();
}

QString ModbusTCP_Class::BU_knife_2_A_E_PM() const
{
    return m_BU_knife_2_A_E_PM;
}

void ModbusTCP_Class::setBU_knife_2_A_E_PM(const QString &newBU_knife_2_A_E_PM)
{
    if (m_BU_knife_2_A_E_PM == newBU_knife_2_A_E_PM)
        return;
    m_BU_knife_2_A_E_PM = newBU_knife_2_A_E_PM;
    emit BU_knife_2_A_E_PMChanged();
}

QString ModbusTCP_Class::FD_knife_1_PM() const
{
    return m_FD_knife_1_PM;
}

void ModbusTCP_Class::setFD_knife_1_PM(const QString &newFD_knife_1_PM)
{
    if (m_FD_knife_1_PM == newFD_knife_1_PM)
        return;
    m_FD_knife_1_PM = newFD_knife_1_PM;
    emit FD_knife_1_PMChanged();
}

QString ModbusTCP_Class::FD_knife_2_PM() const
{
    return m_FD_knife_2_PM;
}

void ModbusTCP_Class::setFD_knife_2_PM(const QString &newFD_knife_2_PM)
{
    if (m_FD_knife_2_PM == newFD_knife_2_PM)
        return;
    m_FD_knife_2_PM = newFD_knife_2_PM;
    emit FD_knife_2_PMChanged();
}

QString ModbusTCP_Class::BD_knife_1_PM() const
{
    return m_BD_knife_1_PM;
}

void ModbusTCP_Class::setBD_knife_1_PM(const QString &newBD_knife_1_PM)
{
    if (m_BD_knife_1_PM == newBD_knife_1_PM)
        return;
    m_BD_knife_1_PM = newBD_knife_1_PM;
    emit BD_knife_1_PMChanged();
}

QString ModbusTCP_Class::BD_knife_2_PM() const
{
    return m_BD_knife_2_PM;
}

void ModbusTCP_Class::setBD_knife_2_PM(const QString &newBD_knife_2_PM)
{
    if (m_BD_knife_2_PM == newBD_knife_2_PM)
        return;
    m_BD_knife_2_PM = newBD_knife_2_PM;
    emit BD_knife_2_PMChanged();
}

QString ModbusTCP_Class::Entry_1_PM() const
{
    return m_Entry_1_PM;
}

void ModbusTCP_Class::setEntry_1_PM(const QString &newEntry_1_PM)
{
    if (m_Entry_1_PM == newEntry_1_PM)
        return;
    m_Entry_1_PM = newEntry_1_PM;
    emit Entry_1_PMChanged();
}

QString ModbusTCP_Class::Entry_2_PM() const
{
    return m_Entry_2_PM;
}

void ModbusTCP_Class::setEntry_2_PM(const QString &newEntry_2_PM)
{
    if (m_Entry_2_PM == newEntry_2_PM)
        return;
    m_Entry_2_PM = newEntry_2_PM;
    emit Entry_2_PMChanged();
}

QString ModbusTCP_Class::Idler_PM() const
{
    return m_Idler_PM;
}

void ModbusTCP_Class::setIdler_PM(const QString &newIdler_PM)
{
    if (m_Idler_PM == newIdler_PM)
        return;
    m_Idler_PM = newIdler_PM;
    emit Idler_PMChanged();
}

QString ModbusTCP_Class::FU_knife_1_TQ() const
{
    return m_FU_knife_1_TQ;
}

void ModbusTCP_Class::setFU_knife_1_TQ(const QString &newFU_knife_1_TQ)
{
    if (m_FU_knife_1_TQ == newFU_knife_1_TQ)
        return;
    m_FU_knife_1_TQ = newFU_knife_1_TQ;
    emit FU_knife_1_TQChanged();
}

QString ModbusTCP_Class::FU_knife_2_TQ() const
{
    return m_FU_knife_2_TQ;
}

void ModbusTCP_Class::setFU_knife_2_TQ(const QString &newFU_knife_2_TQ)
{
    if (m_FU_knife_2_TQ == newFU_knife_2_TQ)
        return;
    m_FU_knife_2_TQ = newFU_knife_2_TQ;
    emit FU_knife_2_TQChanged();
}

QString ModbusTCP_Class::FU_knife_1_A_E_TQ() const
{
    return m_FU_knife_1_A_E_TQ;
}

void ModbusTCP_Class::setFU_knife_1_A_E_TQ(const QString &newFU_knife_1_A_E_TQ)
{
    if (m_FU_knife_1_A_E_TQ == newFU_knife_1_A_E_TQ)
        return;
    m_FU_knife_1_A_E_TQ = newFU_knife_1_A_E_TQ;
    emit FU_knife_1_A_E_TQChanged();
}

QString ModbusTCP_Class::FU_knife_2_A_E_TQ() const
{
    return m_FU_knife_2_A_E_TQ;
}

void ModbusTCP_Class::setFU_knife_2_A_E_TQ(const QString &newFU_knife_2_A_E_TQ)
{
    if (m_FU_knife_2_A_E_TQ == newFU_knife_2_A_E_TQ)
        return;
    m_FU_knife_2_A_E_TQ = newFU_knife_2_A_E_TQ;
    emit FU_knife_2_A_E_TQChanged();
}

QString ModbusTCP_Class::BU_knife_1_TQ() const
{
    return m_BU_knife_1_TQ;
}

void ModbusTCP_Class::setBU_knife_1_TQ(const QString &newBU_knife_1_TQ)
{
    if (m_BU_knife_1_TQ == newBU_knife_1_TQ)
        return;
    m_BU_knife_1_TQ = newBU_knife_1_TQ;
    emit BU_knife_1_TQChanged();
}

QString ModbusTCP_Class::BU_knife_2_TQ() const
{
    return m_BU_knife_2_TQ;
}

void ModbusTCP_Class::setBU_knife_2_TQ(const QString &newBU_knife_2_TQ)
{
    if (m_BU_knife_2_TQ == newBU_knife_2_TQ)
        return;
    m_BU_knife_2_TQ = newBU_knife_2_TQ;
    emit BU_knife_2_TQChanged();
}

QString ModbusTCP_Class::BU_knife_1_A_E_TQ() const
{
    return m_BU_knife_1_A_E_TQ;
}

void ModbusTCP_Class::setBU_knife_1_A_E_TQ(const QString &newBU_knife_1_A_E_TQ)
{
    if (m_BU_knife_1_A_E_TQ == newBU_knife_1_A_E_TQ)
        return;
    m_BU_knife_1_A_E_TQ = newBU_knife_1_A_E_TQ;
    emit BU_knife_1_A_E_TQChanged();
}

QString ModbusTCP_Class::BU_knife_2_A_E_TQ() const
{
    return m_BU_knife_2_A_E_TQ;
}

void ModbusTCP_Class::setBU_knife_2_A_E_TQ(const QString &newBU_knife_2_A_E_TQ)
{
    if (m_BU_knife_2_A_E_TQ == newBU_knife_2_A_E_TQ)
        return;
    m_BU_knife_2_A_E_TQ = newBU_knife_2_A_E_TQ;
    emit BU_knife_2_A_E_TQChanged();
}

QString ModbusTCP_Class::FD_knife_1_TQ() const
{
    return m_FD_knife_1_TQ;
}

void ModbusTCP_Class::setFD_knife_1_TQ(const QString &newFD_knife_1_TQ)
{
    if (m_FD_knife_1_TQ == newFD_knife_1_TQ)
        return;
    m_FD_knife_1_TQ = newFD_knife_1_TQ;
    emit FD_knife_1_TQChanged();
}

QString ModbusTCP_Class::FD_knife_2_TQ() const
{
    return m_FD_knife_2_TQ;
}

void ModbusTCP_Class::setFD_knife_2_TQ(const QString &newFD_knife_2_TQ)
{
    if (m_FD_knife_2_TQ == newFD_knife_2_TQ)
        return;
    m_FD_knife_2_TQ = newFD_knife_2_TQ;
    emit FD_knife_2_TQChanged();
}

QString ModbusTCP_Class::BD_knife_1_TQ() const
{
    return m_BD_knife_1_TQ;
}

void ModbusTCP_Class::setBD_knife_1_TQ(const QString &newBD_knife_1_TQ)
{
    if (m_BD_knife_1_TQ == newBD_knife_1_TQ)
        return;
    m_BD_knife_1_TQ = newBD_knife_1_TQ;
    emit BD_knife_1_TQChanged();
}

QString ModbusTCP_Class::BD_knife_2_TQ() const
{
    return m_BD_knife_2_TQ;
}

void ModbusTCP_Class::setBD_knife_2_TQ(const QString &newBD_knife_2_TQ)
{
    if (m_BD_knife_2_TQ == newBD_knife_2_TQ)
        return;
    m_BD_knife_2_TQ = newBD_knife_2_TQ;
    emit BD_knife_2_TQChanged();
}

QString ModbusTCP_Class::Entry_1_TQ() const
{
    return m_Entry_1_TQ;
}

void ModbusTCP_Class::setEntry_1_TQ(const QString &newEntry_1_TQ)
{
    if (m_Entry_1_TQ == newEntry_1_TQ)
        return;
    m_Entry_1_TQ = newEntry_1_TQ;
    emit Entry_1_TQChanged();
}

QString ModbusTCP_Class::Entry_2_TQ() const
{
    return m_Entry_2_TQ;
}

void ModbusTCP_Class::setEntry_2_TQ(const QString &newEntry_2_TQ)
{
    if (m_Entry_2_TQ == newEntry_2_TQ)
        return;
    m_Entry_2_TQ = newEntry_2_TQ;
    emit Entry_2_TQChanged();
}

QString ModbusTCP_Class::Idler_TQ() const
{
    return m_Idler_TQ;
}

void ModbusTCP_Class::setIdler_TQ(const QString &newIdler_TQ)
{
    if (m_Idler_TQ == newIdler_TQ)
        return;
    m_Idler_TQ = newIdler_TQ;
    emit Idler_TQChanged();
}

QString ModbusTCP_Class::FU_knife_1_A_E_PPR() const
{
    return m_FU_knife_1_A_E_PPR;
}

void ModbusTCP_Class::setFU_knife_1_A_E_PPR(const QString &newFU_knife_1_A_E_PPR)
{
    if (m_FU_knife_1_A_E_PPR == newFU_knife_1_A_E_PPR)
        return;
    m_FU_knife_1_A_E_PPR = newFU_knife_1_A_E_PPR;
    emit FU_knife_1_A_E_PPRChanged();
}

QString ModbusTCP_Class::FU_knife_1_A_E_RR() const
{
    return m_FU_knife_1_A_E_RR;
}

void ModbusTCP_Class::setFU_knife_1_A_E_RR(const QString &newFU_knife_1_A_E_RR)
{
    if (m_FU_knife_1_A_E_RR == newFU_knife_1_A_E_RR)
        return;
    m_FU_knife_1_A_E_RR = newFU_knife_1_A_E_RR;
    emit FU_knife_1_A_E_RRChanged();
}

QString ModbusTCP_Class::FU_knife_1_A_E_DPR() const
{
    return m_FU_knife_1_A_E_DPR;
}

void ModbusTCP_Class::setFU_knife_1_A_E_DPR(const QString &newFU_knife_1_A_E_DPR)
{
    if (m_FU_knife_1_A_E_DPR == newFU_knife_1_A_E_DPR)
        return;
    m_FU_knife_1_A_E_DPR = newFU_knife_1_A_E_DPR;
    emit FU_knife_1_A_E_DPRChanged();
}

QString ModbusTCP_Class::FU_knife_1_A_E_ZP() const
{
    return m_FU_knife_1_A_E_ZP;
}

void ModbusTCP_Class::setFU_knife_1_A_E_ZP(const QString &newFU_knife_1_A_E_ZP)
{
    if (m_FU_knife_1_A_E_ZP == newFU_knife_1_A_E_ZP)
        return;
    m_FU_knife_1_A_E_ZP = newFU_knife_1_A_E_ZP;
    emit FU_knife_1_A_E_ZPChanged();
}

QString ModbusTCP_Class::FU_knife_1_A_E_ZOC() const
{
    return m_FU_knife_1_A_E_ZOC;
}

void ModbusTCP_Class::setFU_knife_1_A_E_ZOC(const QString &newFU_knife_1_A_E_ZOC)
{
    if (m_FU_knife_1_A_E_ZOC == newFU_knife_1_A_E_ZOC)
        return;
    m_FU_knife_1_A_E_ZOC = newFU_knife_1_A_E_ZOC;
    emit FU_knife_1_A_E_ZOCChanged();
}

QString ModbusTCP_Class::FU_knife_1_A_E_T_Acc() const
{
    return m_FU_knife_1_A_E_T_Acc;
}

void ModbusTCP_Class::setFU_knife_1_A_E_T_Acc(const QString &newFU_knife_1_A_E_T_Acc)
{
    if (m_FU_knife_1_A_E_T_Acc == newFU_knife_1_A_E_T_Acc)
        return;
    m_FU_knife_1_A_E_T_Acc = newFU_knife_1_A_E_T_Acc;
    emit FU_knife_1_A_E_T_AccChanged();
}

QString ModbusTCP_Class::FU_knife_1_A_E_T_Dec() const
{
    return m_FU_knife_1_A_E_T_Dec;
}

void ModbusTCP_Class::setFU_knife_1_A_E_T_Dec(const QString &newFU_knife_1_A_E_T_Dec)
{
    if (m_FU_knife_1_A_E_T_Dec == newFU_knife_1_A_E_T_Dec)
        return;
    m_FU_knife_1_A_E_T_Dec = newFU_knife_1_A_E_T_Dec;
    emit FU_knife_1_A_E_T_DecChanged();
}

QString ModbusTCP_Class::FU_knife_1_A_E_PL() const
{
    return m_FU_knife_1_A_E_PL;
}

void ModbusTCP_Class::setFU_knife_1_A_E_PL(const QString &newFU_knife_1_A_E_PL)
{
    if (m_FU_knife_1_A_E_PL == newFU_knife_1_A_E_PL)
        return;
    m_FU_knife_1_A_E_PL = newFU_knife_1_A_E_PL;
    emit FU_knife_1_A_E_PLChanged();
}

QString ModbusTCP_Class::FU_knife_1_A_E_NL() const
{
    return m_FU_knife_1_A_E_NL;
}

void ModbusTCP_Class::setFU_knife_1_A_E_NL(const QString &newFU_knife_1_A_E_NL)
{
    if (m_FU_knife_1_A_E_NL == newFU_knife_1_A_E_NL)
        return;
    m_FU_knife_1_A_E_NL = newFU_knife_1_A_E_NL;
    emit FU_knife_1_A_E_NLChanged();
}

QString ModbusTCP_Class::FU_knife_1_A_E_MLS() const
{
    return m_FU_knife_1_A_E_MLS;
}

void ModbusTCP_Class::setFU_knife_1_A_E_MLS(const QString &newFU_knife_1_A_E_MLS)
{
    if (m_FU_knife_1_A_E_MLS == newFU_knife_1_A_E_MLS)
        return;
    m_FU_knife_1_A_E_MLS = newFU_knife_1_A_E_MLS;
    emit FU_knife_1_A_E_MLSChanged();
}

QString ModbusTCP_Class::FU_knife_1_A_E_MHS() const
{
    return m_FU_knife_1_A_E_MHS;
}

void ModbusTCP_Class::setFU_knife_1_A_E_MHS(const QString &newFU_knife_1_A_E_MHS)
{
    if (m_FU_knife_1_A_E_MHS == newFU_knife_1_A_E_MHS)
        return;
    m_FU_knife_1_A_E_MHS = newFU_knife_1_A_E_MHS;
    emit FU_knife_1_A_E_MHSChanged();
}

QString ModbusTCP_Class::FU_knife_1_A_E_AS() const
{
    return m_FU_knife_1_A_E_AS;
}

void ModbusTCP_Class::setFU_knife_1_A_E_AS(const QString &newFU_knife_1_A_E_AS)
{
    if (m_FU_knife_1_A_E_AS == newFU_knife_1_A_E_AS)
        return;
    m_FU_knife_1_A_E_AS = newFU_knife_1_A_E_AS;
    emit FU_knife_1_A_E_ASChanged();
}

QString ModbusTCP_Class::FU_knife_1_A_E_RTS() const
{
    return m_FU_knife_1_A_E_RTS;
}

void ModbusTCP_Class::setFU_knife_1_A_E_RTS(const QString &newFU_knife_1_A_E_RTS)
{
    if (m_FU_knife_1_A_E_RTS == newFU_knife_1_A_E_RTS)
        return;
    m_FU_knife_1_A_E_RTS = newFU_knife_1_A_E_RTS;
    emit FU_knife_1_A_E_RTSChanged();
}

QString ModbusTCP_Class::FU_knife_2_A_E_PPR() const
{
    return m_FU_knife_2_A_E_PPR;
}

void ModbusTCP_Class::setFU_knife_2_A_E_PPR(const QString &newFU_knife_2_A_E_PPR)
{
    if (m_FU_knife_2_A_E_PPR == newFU_knife_2_A_E_PPR)
        return;
    m_FU_knife_2_A_E_PPR = newFU_knife_2_A_E_PPR;
    emit FU_knife_2_A_E_PPRChanged();
}

QString ModbusTCP_Class::FU_knife_2_A_E_RR() const
{
    return m_FU_knife_2_A_E_RR;
}

void ModbusTCP_Class::setFU_knife_2_A_E_RR(const QString &newFU_knife_2_A_E_RR)
{
    if (m_FU_knife_2_A_E_RR == newFU_knife_2_A_E_RR)
        return;
    m_FU_knife_2_A_E_RR = newFU_knife_2_A_E_RR;
    emit FU_knife_2_A_E_RRChanged();
}

QString ModbusTCP_Class::FU_knife_2_A_E_DPR() const
{
    return m_FU_knife_2_A_E_DPR;
}

void ModbusTCP_Class::setFU_knife_2_A_E_DPR(const QString &newFU_knife_2_A_E_DPR)
{
    if (m_FU_knife_2_A_E_DPR == newFU_knife_2_A_E_DPR)
        return;
    m_FU_knife_2_A_E_DPR = newFU_knife_2_A_E_DPR;
    emit FU_knife_2_A_E_DPRChanged();
}

QString ModbusTCP_Class::FU_knife_2_A_E_ZP() const
{
    return m_FU_knife_2_A_E_ZP;
}

void ModbusTCP_Class::setFU_knife_2_A_E_ZP(const QString &newFU_knife_2_A_E_ZP)
{
    if (m_FU_knife_2_A_E_ZP == newFU_knife_2_A_E_ZP)
        return;
    m_FU_knife_2_A_E_ZP = newFU_knife_2_A_E_ZP;
    emit FU_knife_2_A_E_ZPChanged();
}

QString ModbusTCP_Class::FU_knife_2_A_E_ZOC() const
{
    return m_FU_knife_2_A_E_ZOC;
}

void ModbusTCP_Class::setFU_knife_2_A_E_ZOC(const QString &newFU_knife_2_A_E_ZOC)
{
    if (m_FU_knife_2_A_E_ZOC == newFU_knife_2_A_E_ZOC)
        return;
    m_FU_knife_2_A_E_ZOC = newFU_knife_2_A_E_ZOC;
    emit FU_knife_2_A_E_ZOCChanged();
}

QString ModbusTCP_Class::FU_knife_2_A_E_T_Acc() const
{
    return m_FU_knife_2_A_E_T_Acc;
}

void ModbusTCP_Class::setFU_knife_2_A_E_T_Acc(const QString &newFU_knife_2_A_E_T_Acc)
{
    if (m_FU_knife_2_A_E_T_Acc == newFU_knife_2_A_E_T_Acc)
        return;
    m_FU_knife_2_A_E_T_Acc = newFU_knife_2_A_E_T_Acc;
    emit FU_knife_2_A_E_T_AccChanged();
}

QString ModbusTCP_Class::FU_knife_2_A_E_T_Dec() const
{
    return m_FU_knife_2_A_E_T_Dec;
}

void ModbusTCP_Class::setFU_knife_2_A_E_T_Dec(const QString &newFU_knife_2_A_E_T_Dec)
{
    if (m_FU_knife_2_A_E_T_Dec == newFU_knife_2_A_E_T_Dec)
        return;
    m_FU_knife_2_A_E_T_Dec = newFU_knife_2_A_E_T_Dec;
    emit FU_knife_2_A_E_T_DecChanged();
}

QString ModbusTCP_Class::FU_knife_2_A_E_PL() const
{
    return m_FU_knife_2_A_E_PL;
}

void ModbusTCP_Class::setFU_knife_2_A_E_PL(const QString &newFU_knife_2_A_E_PL)
{
    if (m_FU_knife_2_A_E_PL == newFU_knife_2_A_E_PL)
        return;
    m_FU_knife_2_A_E_PL = newFU_knife_2_A_E_PL;
    emit FU_knife_2_A_E_PLChanged();
}

QString ModbusTCP_Class::FU_knife_2_A_E_NL() const
{
    return m_FU_knife_2_A_E_NL;
}

void ModbusTCP_Class::setFU_knife_2_A_E_NL(const QString &newFU_knife_2_A_E_NL)
{
    if (m_FU_knife_2_A_E_NL == newFU_knife_2_A_E_NL)
        return;
    m_FU_knife_2_A_E_NL = newFU_knife_2_A_E_NL;
    emit FU_knife_2_A_E_NLChanged();
}

QString ModbusTCP_Class::FU_knife_2_A_E_MLS() const
{
    return m_FU_knife_2_A_E_MLS;
}

void ModbusTCP_Class::setFU_knife_2_A_E_MLS(const QString &newFU_knife_2_A_E_MLS)
{
    if (m_FU_knife_2_A_E_MLS == newFU_knife_2_A_E_MLS)
        return;
    m_FU_knife_2_A_E_MLS = newFU_knife_2_A_E_MLS;
    emit FU_knife_2_A_E_MLSChanged();
}

QString ModbusTCP_Class::FU_knife_2_A_E_MHS() const
{
    return m_FU_knife_2_A_E_MHS;
}

void ModbusTCP_Class::setFU_knife_2_A_E_MHS(const QString &newFU_knife_2_A_E_MHS)
{
    if (m_FU_knife_2_A_E_MHS == newFU_knife_2_A_E_MHS)
        return;
    m_FU_knife_2_A_E_MHS = newFU_knife_2_A_E_MHS;
    emit FU_knife_2_A_E_MHSChanged();
}

QString ModbusTCP_Class::FU_knife_2_A_E_AS() const
{
    return m_FU_knife_2_A_E_AS;
}

void ModbusTCP_Class::setFU_knife_2_A_E_AS(const QString &newFU_knife_2_A_E_AS)
{
    if (m_FU_knife_2_A_E_AS == newFU_knife_2_A_E_AS)
        return;
    m_FU_knife_2_A_E_AS = newFU_knife_2_A_E_AS;
    emit FU_knife_2_A_E_ASChanged();
}

QString ModbusTCP_Class::FU_knife_2_A_E_RTS() const
{
    return m_FU_knife_2_A_E_RTS;
}

void ModbusTCP_Class::setFU_knife_2_A_E_RTS(const QString &newFU_knife_2_A_E_RTS)
{
    if (m_FU_knife_2_A_E_RTS == newFU_knife_2_A_E_RTS)
        return;
    m_FU_knife_2_A_E_RTS = newFU_knife_2_A_E_RTS;
    emit FU_knife_2_A_E_RTSChanged();
}

QString ModbusTCP_Class::BU_knife_1_A_E_PPR() const
{
    return m_BU_knife_1_A_E_PPR;
}

void ModbusTCP_Class::setBU_knife_1_A_E_PPR(const QString &newBU_knife_1_A_E_PPR)
{
    if (m_BU_knife_1_A_E_PPR == newBU_knife_1_A_E_PPR)
        return;
    m_BU_knife_1_A_E_PPR = newBU_knife_1_A_E_PPR;
    emit BU_knife_1_A_E_PPRChanged();
}

QString ModbusTCP_Class::BU_knife_1_A_E_RR() const
{
    return m_BU_knife_1_A_E_RR;
}

void ModbusTCP_Class::setBU_knife_1_A_E_RR(const QString &newBU_knife_1_A_E_RR)
{
    if (m_BU_knife_1_A_E_RR == newBU_knife_1_A_E_RR)
        return;
    m_BU_knife_1_A_E_RR = newBU_knife_1_A_E_RR;
    emit BU_knife_1_A_E_RRChanged();
}

QString ModbusTCP_Class::BU_knife_1_A_E_DPR() const
{
    return m_BU_knife_1_A_E_DPR;
}

void ModbusTCP_Class::setBU_knife_1_A_E_DPR(const QString &newBU_knife_1_A_E_DPR)
{
    if (m_BU_knife_1_A_E_DPR == newBU_knife_1_A_E_DPR)
        return;
    m_BU_knife_1_A_E_DPR = newBU_knife_1_A_E_DPR;
    emit BU_knife_1_A_E_DPRChanged();
}

QString ModbusTCP_Class::BU_knife_1_A_E_ZP() const
{
    return m_BU_knife_1_A_E_ZP;
}

void ModbusTCP_Class::setBU_knife_1_A_E_ZP(const QString &newBU_knife_1_A_E_ZP)
{
    if (m_BU_knife_1_A_E_ZP == newBU_knife_1_A_E_ZP)
        return;
    m_BU_knife_1_A_E_ZP = newBU_knife_1_A_E_ZP;
    emit BU_knife_1_A_E_ZPChanged();
}

QString ModbusTCP_Class::BU_knife_1_A_E_ZOC() const
{
    return m_BU_knife_1_A_E_ZOC;
}

void ModbusTCP_Class::setBU_knife_1_A_E_ZOC(const QString &newBU_knife_1_A_E_ZOC)
{
    if (m_BU_knife_1_A_E_ZOC == newBU_knife_1_A_E_ZOC)
        return;
    m_BU_knife_1_A_E_ZOC = newBU_knife_1_A_E_ZOC;
    emit BU_knife_1_A_E_ZOCChanged();
}

QString ModbusTCP_Class::BU_knife_1_A_E_T_Acc() const
{
    return m_BU_knife_1_A_E_T_Acc;
}

void ModbusTCP_Class::setBU_knife_1_A_E_T_Acc(const QString &newBU_knife_1_A_E_T_Acc)
{
    if (m_BU_knife_1_A_E_T_Acc == newBU_knife_1_A_E_T_Acc)
        return;
    m_BU_knife_1_A_E_T_Acc = newBU_knife_1_A_E_T_Acc;
    emit BU_knife_1_A_E_T_AccChanged();
}

QString ModbusTCP_Class::BU_knife_1_A_E_T_Dec() const
{
    return m_BU_knife_1_A_E_T_Dec;
}

void ModbusTCP_Class::setBU_knife_1_A_E_T_Dec(const QString &newBU_knife_1_A_E_T_Dec)
{
    if (m_BU_knife_1_A_E_T_Dec == newBU_knife_1_A_E_T_Dec)
        return;
    m_BU_knife_1_A_E_T_Dec = newBU_knife_1_A_E_T_Dec;
    emit BU_knife_1_A_E_T_DecChanged();
}

QString ModbusTCP_Class::BU_knife_1_A_E_PL() const
{
    return m_BU_knife_1_A_E_PL;
}

void ModbusTCP_Class::setBU_knife_1_A_E_PL(const QString &newBU_knife_1_A_E_PL)
{
    if (m_BU_knife_1_A_E_PL == newBU_knife_1_A_E_PL)
        return;
    m_BU_knife_1_A_E_PL = newBU_knife_1_A_E_PL;
    emit BU_knife_1_A_E_PLChanged();
}

QString ModbusTCP_Class::BU_knife_1_A_E_NL() const
{
    return m_BU_knife_1_A_E_NL;
}

void ModbusTCP_Class::setBU_knife_1_A_E_NL(const QString &newBU_knife_1_A_E_NL)
{
    if (m_BU_knife_1_A_E_NL == newBU_knife_1_A_E_NL)
        return;
    m_BU_knife_1_A_E_NL = newBU_knife_1_A_E_NL;
    emit BU_knife_1_A_E_NLChanged();
}

QString ModbusTCP_Class::BU_knife_1_A_E_MLS() const
{
    return m_BU_knife_1_A_E_MLS;
}

void ModbusTCP_Class::setBU_knife_1_A_E_MLS(const QString &newBU_knife_1_A_E_MLS)
{
    if (m_BU_knife_1_A_E_MLS == newBU_knife_1_A_E_MLS)
        return;
    m_BU_knife_1_A_E_MLS = newBU_knife_1_A_E_MLS;
    emit BU_knife_1_A_E_MLSChanged();
}

QString ModbusTCP_Class::BU_knife_1_A_E_MHS() const
{
    return m_BU_knife_1_A_E_MHS;
}

void ModbusTCP_Class::setBU_knife_1_A_E_MHS(const QString &newBU_knife_1_A_E_MHS)
{
    if (m_BU_knife_1_A_E_MHS == newBU_knife_1_A_E_MHS)
        return;
    m_BU_knife_1_A_E_MHS = newBU_knife_1_A_E_MHS;
    emit BU_knife_1_A_E_MHSChanged();
}

QString ModbusTCP_Class::BU_knife_1_A_E_AS() const
{
    return m_BU_knife_1_A_E_AS;
}

void ModbusTCP_Class::setBU_knife_1_A_E_AS(const QString &newBU_knife_1_A_E_AS)
{
    if (m_BU_knife_1_A_E_AS == newBU_knife_1_A_E_AS)
        return;
    m_BU_knife_1_A_E_AS = newBU_knife_1_A_E_AS;
    emit BU_knife_1_A_E_ASChanged();
}

QString ModbusTCP_Class::BU_knife_1_A_E_RTS() const
{
    return m_BU_knife_1_A_E_RTS;
}

void ModbusTCP_Class::setBU_knife_1_A_E_RTS(const QString &newBU_knife_1_A_E_RTS)
{
    if (m_BU_knife_1_A_E_RTS == newBU_knife_1_A_E_RTS)
        return;
    m_BU_knife_1_A_E_RTS = newBU_knife_1_A_E_RTS;
    emit BU_knife_1_A_E_RTSChanged();
}

QString ModbusTCP_Class::BU_knife_2_A_E_PPR() const
{
    return m_BU_knife_2_A_E_PPR;
}

void ModbusTCP_Class::setBU_knife_2_A_E_PPR(const QString &newBU_knife_2_A_E_PPR)
{
    if (m_BU_knife_2_A_E_PPR == newBU_knife_2_A_E_PPR)
        return;
    m_BU_knife_2_A_E_PPR = newBU_knife_2_A_E_PPR;
    emit BU_knife_2_A_E_PPRChanged();
}

QString ModbusTCP_Class::BU_knife_2_A_E_RR() const
{
    return m_BU_knife_2_A_E_RR;
}

void ModbusTCP_Class::setBU_knife_2_A_E_RR(const QString &newBU_knife_2_A_E_RR)
{
    if (m_BU_knife_2_A_E_RR == newBU_knife_2_A_E_RR)
        return;
    m_BU_knife_2_A_E_RR = newBU_knife_2_A_E_RR;
    emit BU_knife_2_A_E_RRChanged();
}

QString ModbusTCP_Class::BU_knife_2_A_E_DPR() const
{
    return m_BU_knife_2_A_E_DPR;
}

void ModbusTCP_Class::setBU_knife_2_A_E_DPR(const QString &newBU_knife_2_A_E_DPR)
{
    if (m_BU_knife_2_A_E_DPR == newBU_knife_2_A_E_DPR)
        return;
    m_BU_knife_2_A_E_DPR = newBU_knife_2_A_E_DPR;
    emit BU_knife_2_A_E_DPRChanged();
}

QString ModbusTCP_Class::BU_knife_2_A_E_ZP() const
{
    return m_BU_knife_2_A_E_ZP;
}

void ModbusTCP_Class::setBU_knife_2_A_E_ZP(const QString &newBU_knife_2_A_E_ZP)
{
    if (m_BU_knife_2_A_E_ZP == newBU_knife_2_A_E_ZP)
        return;
    m_BU_knife_2_A_E_ZP = newBU_knife_2_A_E_ZP;
    emit BU_knife_2_A_E_ZPChanged();
}

QString ModbusTCP_Class::BU_knife_2_A_E_ZOC() const
{
    return m_BU_knife_2_A_E_ZOC;
}

void ModbusTCP_Class::setBU_knife_2_A_E_ZOC(const QString &newBU_knife_2_A_E_ZOC)
{
    if (m_BU_knife_2_A_E_ZOC == newBU_knife_2_A_E_ZOC)
        return;
    m_BU_knife_2_A_E_ZOC = newBU_knife_2_A_E_ZOC;
    emit BU_knife_2_A_E_ZOCChanged();
}

QString ModbusTCP_Class::BU_knife_2_A_E_T_Acc() const
{
    return m_BU_knife_2_A_E_T_Acc;
}

void ModbusTCP_Class::setBU_knife_2_A_E_T_Acc(const QString &newBU_knife_2_A_E_T_Acc)
{
    if (m_BU_knife_2_A_E_T_Acc == newBU_knife_2_A_E_T_Acc)
        return;
    m_BU_knife_2_A_E_T_Acc = newBU_knife_2_A_E_T_Acc;
    emit BU_knife_2_A_E_T_AccChanged();
}

QString ModbusTCP_Class::BU_knife_2_A_E_T_Dec() const
{
    return m_BU_knife_2_A_E_T_Dec;
}

void ModbusTCP_Class::setBU_knife_2_A_E_T_Dec(const QString &newBU_knife_2_A_E_T_Dec)
{
    if (m_BU_knife_2_A_E_T_Dec == newBU_knife_2_A_E_T_Dec)
        return;
    m_BU_knife_2_A_E_T_Dec = newBU_knife_2_A_E_T_Dec;
    emit BU_knife_2_A_E_T_DecChanged();
}

QString ModbusTCP_Class::BU_knife_2_A_E_PL() const
{
    return m_BU_knife_2_A_E_PL;
}

void ModbusTCP_Class::setBU_knife_2_A_E_PL(const QString &newBU_knife_2_A_E_PL)
{
    if (m_BU_knife_2_A_E_PL == newBU_knife_2_A_E_PL)
        return;
    m_BU_knife_2_A_E_PL = newBU_knife_2_A_E_PL;
    emit BU_knife_2_A_E_PLChanged();
}

QString ModbusTCP_Class::BU_knife_2_A_E_NL() const
{
    return m_BU_knife_2_A_E_NL;
}

void ModbusTCP_Class::setBU_knife_2_A_E_NL(const QString &newBU_knife_2_A_E_NL)
{
    if (m_BU_knife_2_A_E_NL == newBU_knife_2_A_E_NL)
        return;
    m_BU_knife_2_A_E_NL = newBU_knife_2_A_E_NL;
    emit BU_knife_2_A_E_NLChanged();
}

QString ModbusTCP_Class::BU_knife_2_A_E_MLS() const
{
    return m_BU_knife_2_A_E_MLS;
}

void ModbusTCP_Class::setBU_knife_2_A_E_MLS(const QString &newBU_knife_2_A_E_MLS)
{
    if (m_BU_knife_2_A_E_MLS == newBU_knife_2_A_E_MLS)
        return;
    m_BU_knife_2_A_E_MLS = newBU_knife_2_A_E_MLS;
    emit BU_knife_2_A_E_MLSChanged();
}

QString ModbusTCP_Class::BU_knife_2_A_E_MHS() const
{
    return m_BU_knife_2_A_E_MHS;
}

void ModbusTCP_Class::setBU_knife_2_A_E_MHS(const QString &newBU_knife_2_A_E_MHS)
{
    if (m_BU_knife_2_A_E_MHS == newBU_knife_2_A_E_MHS)
        return;
    m_BU_knife_2_A_E_MHS = newBU_knife_2_A_E_MHS;
    emit BU_knife_2_A_E_MHSChanged();
}

QString ModbusTCP_Class::BU_knife_2_A_E_AS() const
{
    return m_BU_knife_2_A_E_AS;
}

void ModbusTCP_Class::setBU_knife_2_A_E_AS(const QString &newBU_knife_2_A_E_AS)
{
    if (m_BU_knife_2_A_E_AS == newBU_knife_2_A_E_AS)
        return;
    m_BU_knife_2_A_E_AS = newBU_knife_2_A_E_AS;
    emit BU_knife_2_A_E_ASChanged();
}

QString ModbusTCP_Class::BU_knife_2_A_E_RTS() const
{
    return m_BU_knife_2_A_E_RTS;
}

void ModbusTCP_Class::setBU_knife_2_A_E_RTS(const QString &newBU_knife_2_A_E_RTS)
{
    if (m_BU_knife_2_A_E_RTS == newBU_knife_2_A_E_RTS)
        return;
    m_BU_knife_2_A_E_RTS = newBU_knife_2_A_E_RTS;
    emit BU_knife_2_A_E_RTSChanged();
}

QString ModbusTCP_Class::Entry_1_PPR() const
{
    return m_Entry_1_PPR;
}

void ModbusTCP_Class::setEntry_1_PPR(const QString &newEntry_1_PPR)
{
    if (m_Entry_1_PPR == newEntry_1_PPR)
        return;
    m_Entry_1_PPR = newEntry_1_PPR;
    emit Entry_1_PPRChanged();
}

QString ModbusTCP_Class::Entry_1_RR() const
{
    return m_Entry_1_RR;
}

void ModbusTCP_Class::setEntry_1_RR(const QString &newEntry_1_RR)
{
    if (m_Entry_1_RR == newEntry_1_RR)
        return;
    m_Entry_1_RR = newEntry_1_RR;
    emit Entry_1_RRChanged();
}

QString ModbusTCP_Class::Entry_1_DPR() const
{
    return m_Entry_1_DPR;
}

void ModbusTCP_Class::setEntry_1_DPR(const QString &newEntry_1_DPR)
{
    if (m_Entry_1_DPR == newEntry_1_DPR)
        return;
    m_Entry_1_DPR = newEntry_1_DPR;
    emit Entry_1_DPRChanged();
}

QString ModbusTCP_Class::Entry_1_ZP() const
{
    return m_Entry_1_ZP;
}

void ModbusTCP_Class::setEntry_1_ZP(const QString &newEntry_1_ZP)
{
    if (m_Entry_1_ZP == newEntry_1_ZP)
        return;
    m_Entry_1_ZP = newEntry_1_ZP;
    emit Entry_1_ZPChanged();
}

QString ModbusTCP_Class::Entry_1_ZOC() const
{
    return m_Entry_1_ZOC;
}

void ModbusTCP_Class::setEntry_1_ZOC(const QString &newEntry_1_ZOC)
{
    if (m_Entry_1_ZOC == newEntry_1_ZOC)
        return;
    m_Entry_1_ZOC = newEntry_1_ZOC;
    emit Entry_1_ZOCChanged();
}

QString ModbusTCP_Class::Entry_1_T_Acc() const
{
    return m_Entry_1_T_Acc;
}

void ModbusTCP_Class::setEntry_1_T_Acc(const QString &newEntry_1_T_Acc)
{
    if (m_Entry_1_T_Acc == newEntry_1_T_Acc)
        return;
    m_Entry_1_T_Acc = newEntry_1_T_Acc;
    emit Entry_1_T_AccChanged();
}

QString ModbusTCP_Class::Entry_1_T_Dec() const
{
    return m_Entry_1_T_Dec;
}

void ModbusTCP_Class::setEntry_1_T_Dec(const QString &newEntry_1_T_Dec)
{
    if (m_Entry_1_T_Dec == newEntry_1_T_Dec)
        return;
    m_Entry_1_T_Dec = newEntry_1_T_Dec;
    emit Entry_1_T_DecChanged();
}

QString ModbusTCP_Class::Entry_1_PL() const
{
    return m_Entry_1_PL;
}

void ModbusTCP_Class::setEntry_1_PL(const QString &newEntry_1_PL)
{
    if (m_Entry_1_PL == newEntry_1_PL)
        return;
    m_Entry_1_PL = newEntry_1_PL;
    emit Entry_1_PLChanged();
}

QString ModbusTCP_Class::Entry_1_NL() const
{
    return m_Entry_1_NL;
}

void ModbusTCP_Class::setEntry_1_NL(const QString &newEntry_1_NL)
{
    if (m_Entry_1_NL == newEntry_1_NL)
        return;
    m_Entry_1_NL = newEntry_1_NL;
    emit Entry_1_NLChanged();
}

QString ModbusTCP_Class::Entry_1_MLS() const
{
    return m_Entry_1_MLS;
}

void ModbusTCP_Class::setEntry_1_MLS(const QString &newEntry_1_MLS)
{
    if (m_Entry_1_MLS == newEntry_1_MLS)
        return;
    m_Entry_1_MLS = newEntry_1_MLS;
    emit Entry_1_MLSChanged();
}

QString ModbusTCP_Class::Entry_1_MHS() const
{
    return m_Entry_1_MHS;
}

void ModbusTCP_Class::setEntry_1_MHS(const QString &newEntry_1_MHS)
{
    if (m_Entry_1_MHS == newEntry_1_MHS)
        return;
    m_Entry_1_MHS = newEntry_1_MHS;
    emit Entry_1_MHSChanged();
}

QString ModbusTCP_Class::Entry_1_AS() const
{
    return m_Entry_1_AS;
}

void ModbusTCP_Class::setEntry_1_AS(const QString &newEntry_1_AS)
{
    if (m_Entry_1_AS == newEntry_1_AS)
        return;
    m_Entry_1_AS = newEntry_1_AS;
    emit Entry_1_ASChanged();
}

QString ModbusTCP_Class::Entry_1_RTS() const
{
    return m_Entry_1_RTS;
}

void ModbusTCP_Class::setEntry_1_RTS(const QString &newEntry_1_RTS)
{
    if (m_Entry_1_RTS == newEntry_1_RTS)
        return;
    m_Entry_1_RTS = newEntry_1_RTS;
    emit Entry_1_RTSChanged();
}

QString ModbusTCP_Class::Entry_2_PPR() const
{
    return m_Entry_2_PPR;
}

void ModbusTCP_Class::setEntry_2_PPR(const QString &newEntry_2_PPR)
{
    if (m_Entry_2_PPR == newEntry_2_PPR)
        return;
    m_Entry_2_PPR = newEntry_2_PPR;
    emit Entry_2_PPRChanged();
}

QString ModbusTCP_Class::Entry_2_RR() const
{
    return m_Entry_2_RR;
}

void ModbusTCP_Class::setEntry_2_RR(const QString &newEntry_2_RR)
{
    if (m_Entry_2_RR == newEntry_2_RR)
        return;
    m_Entry_2_RR = newEntry_2_RR;
    emit Entry_2_RRChanged();
}

QString ModbusTCP_Class::Entry_2_DPR() const
{
    return m_Entry_2_DPR;
}

void ModbusTCP_Class::setEntry_2_DPR(const QString &newEntry_2_DPR)
{
    if (m_Entry_2_DPR == newEntry_2_DPR)
        return;
    m_Entry_2_DPR = newEntry_2_DPR;
    emit Entry_2_DPRChanged();
}

QString ModbusTCP_Class::Entry_2_ZP() const
{
    return m_Entry_2_ZP;
}

void ModbusTCP_Class::setEntry_2_ZP(const QString &newEntry_2_ZP)
{
    if (m_Entry_2_ZP == newEntry_2_ZP)
        return;
    m_Entry_2_ZP = newEntry_2_ZP;
    emit Entry_2_ZPChanged();
}

QString ModbusTCP_Class::Entry_2_ZOC() const
{
    return m_Entry_2_ZOC;
}

void ModbusTCP_Class::setEntry_2_ZOC(const QString &newEntry_2_ZOC)
{
    if (m_Entry_2_ZOC == newEntry_2_ZOC)
        return;
    m_Entry_2_ZOC = newEntry_2_ZOC;
    emit Entry_2_ZOCChanged();
}

QString ModbusTCP_Class::Entry_2_T_Acc() const
{
    return m_Entry_2_T_Acc;
}

void ModbusTCP_Class::setEntry_2_T_Acc(const QString &newEntry_2_T_Acc)
{
    if (m_Entry_2_T_Acc == newEntry_2_T_Acc)
        return;
    m_Entry_2_T_Acc = newEntry_2_T_Acc;
    emit Entry_2_T_AccChanged();
}

QString ModbusTCP_Class::Entry_2_T_Dec() const
{
    return m_Entry_2_T_Dec;
}

void ModbusTCP_Class::setEntry_2_T_Dec(const QString &newEntry_2_T_Dec)
{
    if (m_Entry_2_T_Dec == newEntry_2_T_Dec)
        return;
    m_Entry_2_T_Dec = newEntry_2_T_Dec;
    emit Entry_2_T_DecChanged();
}

QString ModbusTCP_Class::Entry_2_PL() const
{
    return m_Entry_2_PL;
}

void ModbusTCP_Class::setEntry_2_PL(const QString &newEntry_2_PL)
{
    if (m_Entry_2_PL == newEntry_2_PL)
        return;
    m_Entry_2_PL = newEntry_2_PL;
    emit Entry_2_PLChanged();
}

QString ModbusTCP_Class::Entry_2_NL() const
{
    return m_Entry_2_NL;
}

void ModbusTCP_Class::setEntry_2_NL(const QString &newEntry_2_NL)
{
    if (m_Entry_2_NL == newEntry_2_NL)
        return;
    m_Entry_2_NL = newEntry_2_NL;
    emit Entry_2_NLChanged();
}

QString ModbusTCP_Class::Entry_2_MLS() const
{
    return m_Entry_2_MLS;
}

void ModbusTCP_Class::setEntry_2_MLS(const QString &newEntry_2_MLS)
{
    if (m_Entry_2_MLS == newEntry_2_MLS)
        return;
    m_Entry_2_MLS = newEntry_2_MLS;
    emit Entry_2_MLSChanged();
}

QString ModbusTCP_Class::Entry_2_MHS() const
{
    return m_Entry_2_MHS;
}

void ModbusTCP_Class::setEntry_2_MHS(const QString &newEntry_2_MHS)
{
    if (m_Entry_2_MHS == newEntry_2_MHS)
        return;
    m_Entry_2_MHS = newEntry_2_MHS;
    emit Entry_2_MHSChanged();
}

QString ModbusTCP_Class::Entry_2_AS() const
{
    return m_Entry_2_AS;
}

void ModbusTCP_Class::setEntry_2_AS(const QString &newEntry_2_AS)
{
    if (m_Entry_2_AS == newEntry_2_AS)
        return;
    m_Entry_2_AS = newEntry_2_AS;
    emit Entry_2_ASChanged();
}

QString ModbusTCP_Class::Entry_2_RTS() const
{
    return m_Entry_2_RTS;
}

void ModbusTCP_Class::setEntry_2_RTS(const QString &newEntry_2_RTS)
{
    if (m_Entry_2_RTS == newEntry_2_RTS)
        return;
    m_Entry_2_RTS = newEntry_2_RTS;
    emit Entry_2_RTSChanged();
}

int ModbusTCP_Class::currentPageNumber() const
{
    return m_currentPageNumber;
}

void ModbusTCP_Class::setCurrentPageNumber(int newCurrentPageNumber)
{
    if (m_currentPageNumber == newCurrentPageNumber)
        return;
    m_currentPageNumber = newCurrentPageNumber;
    emit currentPageNumberChanged();
}

QString ModbusTCP_Class::FU_knife_2_PPR() const
{
    return m_FU_knife_2_PPR;
}

void ModbusTCP_Class::setFU_knife_2_PPR(const QString &newFU_knife_2_PPR)
{
    if (m_FU_knife_2_PPR == newFU_knife_2_PPR)
        return;
    m_FU_knife_2_PPR = newFU_knife_2_PPR;
    emit FU_knife_2_PPRChanged();
}

QString ModbusTCP_Class::FU_knife_2_RR() const
{
    return m_FU_knife_2_RR;
}

void ModbusTCP_Class::setFU_knife_2_RR(const QString &newFU_knife_2_RR)
{
    if (m_FU_knife_2_RR == newFU_knife_2_RR)
        return;
    m_FU_knife_2_RR = newFU_knife_2_RR;
    emit FU_knife_2_RRChanged();
}

QString ModbusTCP_Class::FU_knife_2_DPR() const
{
    return m_FU_knife_2_DPR;
}

void ModbusTCP_Class::setFU_knife_2_DPR(const QString &newFU_knife_2_DPR)
{
    if (m_FU_knife_2_DPR == newFU_knife_2_DPR)
        return;
    m_FU_knife_2_DPR = newFU_knife_2_DPR;
    emit FU_knife_2_DPRChanged();
}

QString ModbusTCP_Class::FU_knife_2_ZP() const
{
    return m_FU_knife_2_ZP;
}

void ModbusTCP_Class::setFU_knife_2_ZP(const QString &newFU_knife_2_ZP)
{
    if (m_FU_knife_2_ZP == newFU_knife_2_ZP)
        return;
    m_FU_knife_2_ZP = newFU_knife_2_ZP;
    emit FU_knife_2_ZPChanged();
}

QString ModbusTCP_Class::FU_knife_2_ZOC() const
{
    return m_FU_knife_2_ZOC;
}

void ModbusTCP_Class::setFU_knife_2_ZOC(const QString &newFU_knife_2_ZOC)
{
    if (m_FU_knife_2_ZOC == newFU_knife_2_ZOC)
        return;
    m_FU_knife_2_ZOC = newFU_knife_2_ZOC;
    emit FU_knife_2_ZOCChanged();
}

QString ModbusTCP_Class::FU_knife_2_T_Acc() const
{
    return m_FU_knife_2_T_Acc;
}

void ModbusTCP_Class::setFU_knife_2_T_Acc(const QString &newFU_knife_2_T_Acc)
{
    if (m_FU_knife_2_T_Acc == newFU_knife_2_T_Acc)
        return;
    m_FU_knife_2_T_Acc = newFU_knife_2_T_Acc;
    emit FU_knife_2_T_AccChanged();
}

QString ModbusTCP_Class::FU_knife_2_T_Dec() const
{
    return m_FU_knife_2_T_Dec;
}

void ModbusTCP_Class::setFU_knife_2_T_Dec(const QString &newFU_knife_2_T_Dec)
{
    if (m_FU_knife_2_T_Dec == newFU_knife_2_T_Dec)
        return;
    m_FU_knife_2_T_Dec = newFU_knife_2_T_Dec;
    emit FU_knife_2_T_DecChanged();
}

QString ModbusTCP_Class::FU_knife_2_PL() const
{
    return m_FU_knife_2_PL;
}

void ModbusTCP_Class::setFU_knife_2_PL(const QString &newFU_knife_2_PL)
{
    if (m_FU_knife_2_PL == newFU_knife_2_PL)
        return;
    m_FU_knife_2_PL = newFU_knife_2_PL;
    emit FU_knife_2_PLChanged();
}

QString ModbusTCP_Class::FU_knife_2_NL() const
{
    return m_FU_knife_2_NL;
}

void ModbusTCP_Class::setFU_knife_2_NL(const QString &newFU_knife_2_NL)
{
    if (m_FU_knife_2_NL == newFU_knife_2_NL)
        return;
    m_FU_knife_2_NL = newFU_knife_2_NL;
    emit FU_knife_2_NLChanged();
}

QString ModbusTCP_Class::FU_knife_2_MLS() const
{
    return m_FU_knife_2_MLS;
}

void ModbusTCP_Class::setFU_knife_2_MLS(const QString &newFU_knife_2_MLS)
{
    if (m_FU_knife_2_MLS == newFU_knife_2_MLS)
        return;
    m_FU_knife_2_MLS = newFU_knife_2_MLS;
    emit FU_knife_2_MLSChanged();
}

QString ModbusTCP_Class::FU_knife_2_MHS() const
{
    return m_FU_knife_2_MHS;
}

void ModbusTCP_Class::setFU_knife_2_MHS(const QString &newFU_knife_2_MHS)
{
    if (m_FU_knife_2_MHS == newFU_knife_2_MHS)
        return;
    m_FU_knife_2_MHS = newFU_knife_2_MHS;
    emit FU_knife_2_MHSChanged();
}

QString ModbusTCP_Class::FU_knife_2_AS() const
{
    return m_FU_knife_2_AS;
}

void ModbusTCP_Class::setFU_knife_2_AS(const QString &newFU_knife_2_AS)
{
    if (m_FU_knife_2_AS == newFU_knife_2_AS)
        return;
    m_FU_knife_2_AS = newFU_knife_2_AS;
    emit FU_knife_2_ASChanged();
}

QString ModbusTCP_Class::FU_knife_2_RTS() const
{
    return m_FU_knife_2_RTS;
}

void ModbusTCP_Class::setFU_knife_2_RTS(const QString &newFU_knife_2_RTS)
{
    if (m_FU_knife_2_RTS == newFU_knife_2_RTS)
        return;
    m_FU_knife_2_RTS = newFU_knife_2_RTS;
    emit FU_knife_2_RTSChanged();
}

QString ModbusTCP_Class::FU_knife_1_PPR() const
{
    return m_FU_knife_1_PPR;
}

void ModbusTCP_Class::setFU_knife_1_PPR(const QString &newFU_knife_1_PPR)
{
    if (m_FU_knife_1_PPR == newFU_knife_1_PPR)
        return;
    m_FU_knife_1_PPR = newFU_knife_1_PPR;
    emit FU_knife_1_PPRChanged();
}

QString ModbusTCP_Class::FU_knife_1_RR() const
{
    return m_FU_knife_1_RR;
}

void ModbusTCP_Class::setFU_knife_1_RR(const QString &newFU_knife_1_RR)
{
    if (m_FU_knife_1_RR == newFU_knife_1_RR)
        return;
    m_FU_knife_1_RR = newFU_knife_1_RR;
    emit FU_knife_1_RRChanged();
}

QString ModbusTCP_Class::FU_knife_1_DPR() const
{
    return m_FU_knife_1_DPR;
}

void ModbusTCP_Class::setFU_knife_1_DPR(const QString &newFU_knife_1_DPR)
{
    if (m_FU_knife_1_DPR == newFU_knife_1_DPR)
        return;
    m_FU_knife_1_DPR = newFU_knife_1_DPR;
    emit FU_knife_1_DPRChanged();
}

QString ModbusTCP_Class::FU_knife_1_ZP() const
{
    return m_FU_knife_1_ZP;
}

void ModbusTCP_Class::setFU_knife_1_ZP(const QString &newFU_knife_1_ZP)
{
    if (m_FU_knife_1_ZP == newFU_knife_1_ZP)
        return;
    m_FU_knife_1_ZP = newFU_knife_1_ZP;
    emit FU_knife_1_ZPChanged();
}

QString ModbusTCP_Class::FU_knife_1_ZOC() const
{
    return m_FU_knife_1_ZOC;
}

void ModbusTCP_Class::setFU_knife_1_ZOC(const QString &newFU_knife_1_ZOC)
{
    if (m_FU_knife_1_ZOC == newFU_knife_1_ZOC)
        return;
    m_FU_knife_1_ZOC = newFU_knife_1_ZOC;
    emit FU_knife_1_ZOCChanged();
}

QString ModbusTCP_Class::FU_knife_1_T_Acc() const
{
    return m_FU_knife_1_T_Acc;
}

void ModbusTCP_Class::setFU_knife_1_T_Acc(const QString &newFU_knife_1_T_Acc)
{
    if (m_FU_knife_1_T_Acc == newFU_knife_1_T_Acc)
        return;
    m_FU_knife_1_T_Acc = newFU_knife_1_T_Acc;
    emit FU_knife_1_T_AccChanged();
}

QString ModbusTCP_Class::FU_knife_1_T_Dec() const
{
    return m_FU_knife_1_T_Dec;
}

void ModbusTCP_Class::setFU_knife_1_T_Dec(const QString &newFU_knife_1_T_Dec)
{
    if (m_FU_knife_1_T_Dec == newFU_knife_1_T_Dec)
        return;
    m_FU_knife_1_T_Dec = newFU_knife_1_T_Dec;
    emit FU_knife_1_T_DecChanged();
}

QString ModbusTCP_Class::FU_knife_1_PL() const
{
    return m_FU_knife_1_PL;
}

void ModbusTCP_Class::setFU_knife_1_PL(const QString &newFU_knife_1_PL)
{
    if (m_FU_knife_1_PL == newFU_knife_1_PL)
        return;
    m_FU_knife_1_PL = newFU_knife_1_PL;
    emit FU_knife_1_PLChanged();
}

QString ModbusTCP_Class::FU_knife_1_NL() const
{
    return m_FU_knife_1_NL;
}

void ModbusTCP_Class::setFU_knife_1_NL(const QString &newFU_knife_1_NL)
{
    if (m_FU_knife_1_NL == newFU_knife_1_NL)
        return;
    m_FU_knife_1_NL = newFU_knife_1_NL;
    emit FU_knife_1_NLChanged();
}

QString ModbusTCP_Class::FU_knife_1_MLS() const
{
    return m_FU_knife_1_MLS;
}

void ModbusTCP_Class::setFU_knife_1_MLS(const QString &newFU_knife_1_MLS)
{
    if (m_FU_knife_1_MLS == newFU_knife_1_MLS)
        return;
    m_FU_knife_1_MLS = newFU_knife_1_MLS;
    emit FU_knife_1_MLSChanged();
}

QString ModbusTCP_Class::FU_knife_1_MHS() const
{
    return m_FU_knife_1_MHS;
}

void ModbusTCP_Class::setFU_knife_1_MHS(const QString &newFU_knife_1_MHS)
{
    if (m_FU_knife_1_MHS == newFU_knife_1_MHS)
        return;
    m_FU_knife_1_MHS = newFU_knife_1_MHS;
    emit FU_knife_1_MHSChanged();
}

QString ModbusTCP_Class::FU_knife_1_AS() const
{
    return m_FU_knife_1_AS;
}

void ModbusTCP_Class::setFU_knife_1_AS(const QString &newFU_knife_1_AS)
{
    if (m_FU_knife_1_AS == newFU_knife_1_AS)
        return;
    m_FU_knife_1_AS = newFU_knife_1_AS;
    emit FU_knife_1_ASChanged();
}

QString ModbusTCP_Class::FU_knife_1_RTS() const
{
    return m_FU_knife_1_RTS;
}

void ModbusTCP_Class::setFU_knife_1_RTS(const QString &newFU_knife_1_RTS)
{
    if (m_FU_knife_1_RTS == newFU_knife_1_RTS)
        return;
    m_FU_knife_1_RTS = newFU_knife_1_RTS;
    emit FU_knife_1_RTSChanged();
}

QString ModbusTCP_Class::BU_knife_1_PPR() const
{
    return m_BU_knife_1_PPR;
}

void ModbusTCP_Class::setBU_knife_1_PPR(const QString &newBU_knife_1_PPR)
{
    if (m_BU_knife_1_PPR == newBU_knife_1_PPR)
        return;
    m_BU_knife_1_PPR = newBU_knife_1_PPR;
    emit BU_knife_1_PPRChanged();
}

QString ModbusTCP_Class::BU_knife_1_RR() const
{
    return m_BU_knife_1_RR;
}

void ModbusTCP_Class::setBU_knife_1_RR(const QString &newBU_knife_1_RR)
{
    if (m_BU_knife_1_RR == newBU_knife_1_RR)
        return;
    m_BU_knife_1_RR = newBU_knife_1_RR;
    emit BU_knife_1_RRChanged();
}

QString ModbusTCP_Class::BU_knife_1_DPR() const
{
    return m_BU_knife_1_DPR;
}

void ModbusTCP_Class::setBU_knife_1_DPR(const QString &newBU_knife_1_DPR)
{
    if (m_BU_knife_1_DPR == newBU_knife_1_DPR)
        return;
    m_BU_knife_1_DPR = newBU_knife_1_DPR;
    emit BU_knife_1_DPRChanged();
}

QString ModbusTCP_Class::BU_knife_1_ZP() const
{
    return m_BU_knife_1_ZP;
}

void ModbusTCP_Class::setBU_knife_1_ZP(const QString &newBU_knife_1_ZP)
{
    if (m_BU_knife_1_ZP == newBU_knife_1_ZP)
        return;
    m_BU_knife_1_ZP = newBU_knife_1_ZP;
    emit BU_knife_1_ZPChanged();
}

QString ModbusTCP_Class::BU_knife_1_ZOC() const
{
    return m_BU_knife_1_ZOC;
}

void ModbusTCP_Class::setBU_knife_1_ZOC(const QString &newBU_knife_1_ZOC)
{
    if (m_BU_knife_1_ZOC == newBU_knife_1_ZOC)
        return;
    m_BU_knife_1_ZOC = newBU_knife_1_ZOC;
    emit BU_knife_1_ZOCChanged();
}

QString ModbusTCP_Class::BU_knife_1_T_Acc() const
{
    return m_BU_knife_1_T_Acc;
}

void ModbusTCP_Class::setBU_knife_1_T_Acc(const QString &newBU_knife_1_T_Acc)
{
    if (m_BU_knife_1_T_Acc == newBU_knife_1_T_Acc)
        return;
    m_BU_knife_1_T_Acc = newBU_knife_1_T_Acc;
    emit BU_knife_1_T_AccChanged();
}

QString ModbusTCP_Class::BU_knife_1_T_Dec() const
{
    return m_BU_knife_1_T_Dec;
}

void ModbusTCP_Class::setBU_knife_1_T_Dec(const QString &newBU_knife_1_T_Dec)
{
    if (m_BU_knife_1_T_Dec == newBU_knife_1_T_Dec)
        return;
    m_BU_knife_1_T_Dec = newBU_knife_1_T_Dec;
    emit BU_knife_1_T_DecChanged();
}

QString ModbusTCP_Class::BU_knife_1_PL() const
{
    return m_BU_knife_1_PL;
}

void ModbusTCP_Class::setBU_knife_1_PL(const QString &newBU_knife_1_PL)
{
    if (m_BU_knife_1_PL == newBU_knife_1_PL)
        return;
    m_BU_knife_1_PL = newBU_knife_1_PL;
    emit BU_knife_1_PLChanged();
}

QString ModbusTCP_Class::BU_knife_1_NL() const
{
    return m_BU_knife_1_NL;
}

void ModbusTCP_Class::setBU_knife_1_NL(const QString &newBU_knife_1_NL)
{
    if (m_BU_knife_1_NL == newBU_knife_1_NL)
        return;
    m_BU_knife_1_NL = newBU_knife_1_NL;
    emit BU_knife_1_NLChanged();
}

QString ModbusTCP_Class::BU_knife_1_MLS() const
{
    return m_BU_knife_1_MLS;
}

void ModbusTCP_Class::setBU_knife_1_MLS(const QString &newBU_knife_1_MLS)
{
    if (m_BU_knife_1_MLS == newBU_knife_1_MLS)
        return;
    m_BU_knife_1_MLS = newBU_knife_1_MLS;
    emit BU_knife_1_MLSChanged();
}

QString ModbusTCP_Class::BU_knife_1_MHS() const
{
    return m_BU_knife_1_MHS;
}

void ModbusTCP_Class::setBU_knife_1_MHS(const QString &newBU_knife_1_MHS)
{
    if (m_BU_knife_1_MHS == newBU_knife_1_MHS)
        return;
    m_BU_knife_1_MHS = newBU_knife_1_MHS;
    emit BU_knife_1_MHSChanged();
}

QString ModbusTCP_Class::BU_knife_1_AS() const
{
    return m_BU_knife_1_AS;
}

void ModbusTCP_Class::setBU_knife_1_AS(const QString &newBU_knife_1_AS)
{
    if (m_BU_knife_1_AS == newBU_knife_1_AS)
        return;
    m_BU_knife_1_AS = newBU_knife_1_AS;
    emit BU_knife_1_ASChanged();
}

QString ModbusTCP_Class::BU_knife_1_RTS() const
{
    return m_BU_knife_1_RTS;
}

void ModbusTCP_Class::setBU_knife_1_RTS(const QString &newBU_knife_1_RTS)
{
    if (m_BU_knife_1_RTS == newBU_knife_1_RTS)
        return;
    m_BU_knife_1_RTS = newBU_knife_1_RTS;
    emit BU_knife_1_RTSChanged();
}

QString ModbusTCP_Class::BU_knife_2_PPR() const
{
    return m_BU_knife_2_PPR;
}

void ModbusTCP_Class::setBU_knife_2_PPR(const QString &newBU_knife_2_PPR)
{
    if (m_BU_knife_2_PPR == newBU_knife_2_PPR)
        return;
    m_BU_knife_2_PPR = newBU_knife_2_PPR;
    emit BU_knife_2_PPRChanged();
}

QString ModbusTCP_Class::BU_knife_2_RR() const
{
    return m_BU_knife_2_RR;
}

void ModbusTCP_Class::setBU_knife_2_RR(const QString &newBU_knife_2_RR)
{
    if (m_BU_knife_2_RR == newBU_knife_2_RR)
        return;
    m_BU_knife_2_RR = newBU_knife_2_RR;
    emit BU_knife_2_RRChanged();
}

QString ModbusTCP_Class::BU_knife_2_DPR() const
{
    return m_BU_knife_2_DPR;
}

void ModbusTCP_Class::setBU_knife_2_DPR(const QString &newBU_knife_2_DPR)
{
    if (m_BU_knife_2_DPR == newBU_knife_2_DPR)
        return;
    m_BU_knife_2_DPR = newBU_knife_2_DPR;
    emit BU_knife_2_DPRChanged();
}

QString ModbusTCP_Class::BU_knife_2_ZP() const
{
    return m_BU_knife_2_ZP;
}

void ModbusTCP_Class::setBU_knife_2_ZP(const QString &newBU_knife_2_ZP)
{
    if (m_BU_knife_2_ZP == newBU_knife_2_ZP)
        return;
    m_BU_knife_2_ZP = newBU_knife_2_ZP;
    emit BU_knife_2_ZPChanged();
}

QString ModbusTCP_Class::BU_knife_2_ZOC() const
{
    return m_BU_knife_2_ZOC;
}

void ModbusTCP_Class::setBU_knife_2_ZOC(const QString &newBU_knife_2_ZOC)
{
    if (m_BU_knife_2_ZOC == newBU_knife_2_ZOC)
        return;
    m_BU_knife_2_ZOC = newBU_knife_2_ZOC;
    emit BU_knife_2_ZOCChanged();
}

QString ModbusTCP_Class::BU_knife_2_T_Acc() const
{
    return m_BU_knife_2_T_Acc;
}

void ModbusTCP_Class::setBU_knife_2_T_Acc(const QString &newBU_knife_2_T_Acc)
{
    if (m_BU_knife_2_T_Acc == newBU_knife_2_T_Acc)
        return;
    m_BU_knife_2_T_Acc = newBU_knife_2_T_Acc;
    emit BU_knife_2_T_AccChanged();
}

QString ModbusTCP_Class::BU_knife_2_T_Dec() const
{
    return m_BU_knife_2_T_Dec;
}

void ModbusTCP_Class::setBU_knife_2_T_Dec(const QString &newBU_knife_2_T_Dec)
{
    if (m_BU_knife_2_T_Dec == newBU_knife_2_T_Dec)
        return;
    m_BU_knife_2_T_Dec = newBU_knife_2_T_Dec;
    emit BU_knife_2_T_DecChanged();
}

QString ModbusTCP_Class::BU_knife_2_PL() const
{
    return m_BU_knife_2_PL;
}

void ModbusTCP_Class::setBU_knife_2_PL(const QString &newBU_knife_2_PL)
{
    if (m_BU_knife_2_PL == newBU_knife_2_PL)
        return;
    m_BU_knife_2_PL = newBU_knife_2_PL;
    emit BU_knife_2_PLChanged();
}

QString ModbusTCP_Class::BU_knife_2_NL() const
{
    return m_BU_knife_2_NL;
}

void ModbusTCP_Class::setBU_knife_2_NL(const QString &newBU_knife_2_NL)
{
    if (m_BU_knife_2_NL == newBU_knife_2_NL)
        return;
    m_BU_knife_2_NL = newBU_knife_2_NL;
    emit BU_knife_2_NLChanged();
}

QString ModbusTCP_Class::BU_knife_2_MLS() const
{
    return m_BU_knife_2_MLS;
}

void ModbusTCP_Class::setBU_knife_2_MLS(const QString &newBU_knife_2_MLS)
{
    if (m_BU_knife_2_MLS == newBU_knife_2_MLS)
        return;
    m_BU_knife_2_MLS = newBU_knife_2_MLS;
    emit BU_knife_2_MLSChanged();
}

QString ModbusTCP_Class::BU_knife_2_MHS() const
{
    return m_BU_knife_2_MHS;
}

void ModbusTCP_Class::setBU_knife_2_MHS(const QString &newBU_knife_2_MHS)
{
    if (m_BU_knife_2_MHS == newBU_knife_2_MHS)
        return;
    m_BU_knife_2_MHS = newBU_knife_2_MHS;
    emit BU_knife_2_MHSChanged();
}

QString ModbusTCP_Class::BU_knife_2_AS() const
{
    return m_BU_knife_2_AS;
}

void ModbusTCP_Class::setBU_knife_2_AS(const QString &newBU_knife_2_AS)
{
    if (m_BU_knife_2_AS == newBU_knife_2_AS)
        return;
    m_BU_knife_2_AS = newBU_knife_2_AS;
    emit BU_knife_2_ASChanged();
}

QString ModbusTCP_Class::BU_knife_2_RTS() const
{
    return m_BU_knife_2_RTS;
}

void ModbusTCP_Class::setBU_knife_2_RTS(const QString &newBU_knife_2_RTS)
{
    if (m_BU_knife_2_RTS == newBU_knife_2_RTS)
        return;
    m_BU_knife_2_RTS = newBU_knife_2_RTS;
    emit BU_knife_2_RTSChanged();
}

QString ModbusTCP_Class::FD_knife_1_PPR() const
{
    return m_FD_knife_1_PPR;
}

void ModbusTCP_Class::setFD_knife_1_PPR(const QString &newFD_knife_1_PPR)
{
    if (m_FD_knife_1_PPR == newFD_knife_1_PPR)
        return;
    m_FD_knife_1_PPR = newFD_knife_1_PPR;
    emit FD_knife_1_PPRChanged();
}

QString ModbusTCP_Class::FD_knife_1_RR() const
{
    return m_FD_knife_1_RR;
}

void ModbusTCP_Class::setFD_knife_1_RR(const QString &newFD_knife_1_RR)
{
    if (m_FD_knife_1_RR == newFD_knife_1_RR)
        return;
    m_FD_knife_1_RR = newFD_knife_1_RR;
    emit FD_knife_1_RRChanged();
}

QString ModbusTCP_Class::FD_knife_1_DPR() const
{
    return m_FD_knife_1_DPR;
}

void ModbusTCP_Class::setFD_knife_1_DPR(const QString &newFD_knife_1_DPR)
{
    if (m_FD_knife_1_DPR == newFD_knife_1_DPR)
        return;
    m_FD_knife_1_DPR = newFD_knife_1_DPR;
    emit FD_knife_1_DPRChanged();
}

QString ModbusTCP_Class::FD_knife_1_ZP() const
{
    return m_FD_knife_1_ZP;
}

void ModbusTCP_Class::setFD_knife_1_ZP(const QString &newFD_knife_1_ZP)
{
    if (m_FD_knife_1_ZP == newFD_knife_1_ZP)
        return;
    m_FD_knife_1_ZP = newFD_knife_1_ZP;
    emit FD_knife_1_ZPChanged();
}

QString ModbusTCP_Class::FD_knife_1_ZOC() const
{
    return m_FD_knife_1_ZOC;
}

void ModbusTCP_Class::setFD_knife_1_ZOC(const QString &newFD_knife_1_ZOC)
{
    if (m_FD_knife_1_ZOC == newFD_knife_1_ZOC)
        return;
    m_FD_knife_1_ZOC = newFD_knife_1_ZOC;
    emit FD_knife_1_ZOCChanged();
}

QString ModbusTCP_Class::FD_knife_1_T_Acc() const
{
    return m_FD_knife_1_T_Acc;
}

void ModbusTCP_Class::setFD_knife_1_T_Acc(const QString &newFD_knife_1_T_Acc)
{
    if (m_FD_knife_1_T_Acc == newFD_knife_1_T_Acc)
        return;
    m_FD_knife_1_T_Acc = newFD_knife_1_T_Acc;
    emit FD_knife_1_T_AccChanged();
}

QString ModbusTCP_Class::FD_knife_1_T_Dec() const
{
    return m_FD_knife_1_T_Dec;
}

void ModbusTCP_Class::setFD_knife_1_T_Dec(const QString &newFD_knife_1_T_Dec)
{
    if (m_FD_knife_1_T_Dec == newFD_knife_1_T_Dec)
        return;
    m_FD_knife_1_T_Dec = newFD_knife_1_T_Dec;
    emit FD_knife_1_T_DecChanged();
}

QString ModbusTCP_Class::FD_knife_1_PL() const
{
    return m_FD_knife_1_PL;
}

void ModbusTCP_Class::setFD_knife_1_PL(const QString &newFD_knife_1_PL)
{
    if (m_FD_knife_1_PL == newFD_knife_1_PL)
        return;
    m_FD_knife_1_PL = newFD_knife_1_PL;
    emit FD_knife_1_PLChanged();
}

QString ModbusTCP_Class::FD_knife_1_NL() const
{
    return m_FD_knife_1_NL;
}

void ModbusTCP_Class::setFD_knife_1_NL(const QString &newFD_knife_1_NL)
{
    if (m_FD_knife_1_NL == newFD_knife_1_NL)
        return;
    m_FD_knife_1_NL = newFD_knife_1_NL;
    emit FD_knife_1_NLChanged();
}

QString ModbusTCP_Class::FD_knife_1_MLS() const
{
    return m_FD_knife_1_MLS;
}

void ModbusTCP_Class::setFD_knife_1_MLS(const QString &newFD_knife_1_MLS)
{
    if (m_FD_knife_1_MLS == newFD_knife_1_MLS)
        return;
    m_FD_knife_1_MLS = newFD_knife_1_MLS;
    emit FD_knife_1_MLSChanged();
}

QString ModbusTCP_Class::FD_knife_1_MHS() const
{
    return m_FD_knife_1_MHS;
}

void ModbusTCP_Class::setFD_knife_1_MHS(const QString &newFD_knife_1_MHS)
{
    if (m_FD_knife_1_MHS == newFD_knife_1_MHS)
        return;
    m_FD_knife_1_MHS = newFD_knife_1_MHS;
    emit FD_knife_1_MHSChanged();
}

QString ModbusTCP_Class::FD_knife_1_AS() const
{
    return m_FD_knife_1_AS;
}

void ModbusTCP_Class::setFD_knife_1_AS(const QString &newFD_knife_1_AS)
{
    if (m_FD_knife_1_AS == newFD_knife_1_AS)
        return;
    m_FD_knife_1_AS = newFD_knife_1_AS;
    emit FD_knife_1_ASChanged();
}

QString ModbusTCP_Class::FD_knife_1_RTS() const
{
    return m_FD_knife_1_RTS;
}

void ModbusTCP_Class::setFD_knife_1_RTS(const QString &newFD_knife_1_RTS)
{
    if (m_FD_knife_1_RTS == newFD_knife_1_RTS)
        return;
    m_FD_knife_1_RTS = newFD_knife_1_RTS;
    emit FD_knife_1_RTSChanged();
}

QString ModbusTCP_Class::FD_knife_2_PPR() const
{
    return m_FD_knife_2_PPR;
}

void ModbusTCP_Class::setFD_knife_2_PPR(const QString &newFD_knife_2_PPR)
{
    if (m_FD_knife_2_PPR == newFD_knife_2_PPR)
        return;
    m_FD_knife_2_PPR = newFD_knife_2_PPR;
    emit FD_knife_2_PPRChanged();
}

QString ModbusTCP_Class::FD_knife_2_RR() const
{
    return m_FD_knife_2_RR;
}

void ModbusTCP_Class::setFD_knife_2_RR(const QString &newFD_knife_2_RR)
{
    if (m_FD_knife_2_RR == newFD_knife_2_RR)
        return;
    m_FD_knife_2_RR = newFD_knife_2_RR;
    emit FD_knife_2_RRChanged();
}

QString ModbusTCP_Class::FD_knife_2_DPR() const
{
    return m_FD_knife_2_DPR;
}

void ModbusTCP_Class::setFD_knife_2_DPR(const QString &newFD_knife_2_DPR)
{
    if (m_FD_knife_2_DPR == newFD_knife_2_DPR)
        return;
    m_FD_knife_2_DPR = newFD_knife_2_DPR;
    emit FD_knife_2_DPRChanged();
}

QString ModbusTCP_Class::FD_knife_2_ZP() const
{
    return m_FD_knife_2_ZP;
}

void ModbusTCP_Class::setFD_knife_2_ZP(const QString &newFD_knife_2_ZP)
{
    if (m_FD_knife_2_ZP == newFD_knife_2_ZP)
        return;
    m_FD_knife_2_ZP = newFD_knife_2_ZP;
    emit FD_knife_2_ZPChanged();
}

QString ModbusTCP_Class::FD_knife_2_ZOC() const
{
    return m_FD_knife_2_ZOC;
}

void ModbusTCP_Class::setFD_knife_2_ZOC(const QString &newFD_knife_2_ZOC)
{
    if (m_FD_knife_2_ZOC == newFD_knife_2_ZOC)
        return;
    m_FD_knife_2_ZOC = newFD_knife_2_ZOC;
    emit FD_knife_2_ZOCChanged();
}

QString ModbusTCP_Class::FD_knife_2_T_Acc() const
{
    return m_FD_knife_2_T_Acc;
}

void ModbusTCP_Class::setFD_knife_2_T_Acc(const QString &newFD_knife_2_T_Acc)
{
    if (m_FD_knife_2_T_Acc == newFD_knife_2_T_Acc)
        return;
    m_FD_knife_2_T_Acc = newFD_knife_2_T_Acc;
    emit FD_knife_2_T_AccChanged();
}

QString ModbusTCP_Class::FD_knife_2_T_Dec() const
{
    return m_FD_knife_2_T_Dec;
}

void ModbusTCP_Class::setFD_knife_2_T_Dec(const QString &newFD_knife_2_T_Dec)
{
    if (m_FD_knife_2_T_Dec == newFD_knife_2_T_Dec)
        return;
    m_FD_knife_2_T_Dec = newFD_knife_2_T_Dec;
    emit FD_knife_2_T_DecChanged();
}

QString ModbusTCP_Class::FD_knife_2_PL() const
{
    return m_FD_knife_2_PL;
}

void ModbusTCP_Class::setFD_knife_2_PL(const QString &newFD_knife_2_PL)
{
    if (m_FD_knife_2_PL == newFD_knife_2_PL)
        return;
    m_FD_knife_2_PL = newFD_knife_2_PL;
    emit FD_knife_2_PLChanged();
}

QString ModbusTCP_Class::FD_knife_2_NL() const
{
    return m_FD_knife_2_NL;
}

void ModbusTCP_Class::setFD_knife_2_NL(const QString &newFD_knife_2_NL)
{
    if (m_FD_knife_2_NL == newFD_knife_2_NL)
        return;
    m_FD_knife_2_NL = newFD_knife_2_NL;
    emit FD_knife_2_NLChanged();
}

QString ModbusTCP_Class::FD_knife_2_MLS() const
{
    return m_FD_knife_2_MLS;
}

void ModbusTCP_Class::setFD_knife_2_MLS(const QString &newFD_knife_2_MLS)
{
    if (m_FD_knife_2_MLS == newFD_knife_2_MLS)
        return;
    m_FD_knife_2_MLS = newFD_knife_2_MLS;
    emit FD_knife_2_MLSChanged();
}

QString ModbusTCP_Class::FD_knife_2_MHS() const
{
    return m_FD_knife_2_MHS;
}

void ModbusTCP_Class::setFD_knife_2_MHS(const QString &newFD_knife_2_MHS)
{
    if (m_FD_knife_2_MHS == newFD_knife_2_MHS)
        return;
    m_FD_knife_2_MHS = newFD_knife_2_MHS;
    emit FD_knife_2_MHSChanged();
}

QString ModbusTCP_Class::FD_knife_2_AS() const
{
    return m_FD_knife_2_AS;
}

void ModbusTCP_Class::setFD_knife_2_AS(const QString &newFD_knife_2_AS)
{
    if (m_FD_knife_2_AS == newFD_knife_2_AS)
        return;
    m_FD_knife_2_AS = newFD_knife_2_AS;
    emit FD_knife_2_ASChanged();
}

QString ModbusTCP_Class::FD_knife_2_RTS() const
{
    return m_FD_knife_2_RTS;
}

void ModbusTCP_Class::setFD_knife_2_RTS(const QString &newFD_knife_2_RTS)
{
    if (m_FD_knife_2_RTS == newFD_knife_2_RTS)
        return;
    m_FD_knife_2_RTS = newFD_knife_2_RTS;
    emit FD_knife_2_RTSChanged();
}

QString ModbusTCP_Class::BD_knife_1_PPR() const
{
    return m_BD_knife_1_PPR;
}

void ModbusTCP_Class::setBD_knife_1_PPR(const QString &newBD_knife_1_PPR)
{
    if (m_BD_knife_1_PPR == newBD_knife_1_PPR)
        return;
    m_BD_knife_1_PPR = newBD_knife_1_PPR;
    emit BD_knife_1_PPRChanged();
}

QString ModbusTCP_Class::BD_knife_1_RR() const
{
    return m_BD_knife_1_RR;
}

void ModbusTCP_Class::setBD_knife_1_RR(const QString &newBD_knife_1_RR)
{
    if (m_BD_knife_1_RR == newBD_knife_1_RR)
        return;
    m_BD_knife_1_RR = newBD_knife_1_RR;
    emit BD_knife_1_RRChanged();
}

QString ModbusTCP_Class::BD_knife_1_DPR() const
{
    return m_BD_knife_1_DPR;
}

void ModbusTCP_Class::setBD_knife_1_DPR(const QString &newBD_knife_1_DPR)
{
    if (m_BD_knife_1_DPR == newBD_knife_1_DPR)
        return;
    m_BD_knife_1_DPR = newBD_knife_1_DPR;
    emit BD_knife_1_DPRChanged();
}

QString ModbusTCP_Class::BD_knife_1_ZP() const
{
    return m_BD_knife_1_ZP;
}

void ModbusTCP_Class::setBD_knife_1_ZP(const QString &newBD_knife_1_ZP)
{
    if (m_BD_knife_1_ZP == newBD_knife_1_ZP)
        return;
    m_BD_knife_1_ZP = newBD_knife_1_ZP;
    emit BD_knife_1_ZPChanged();
}

QString ModbusTCP_Class::BD_knife_1_ZOC() const
{
    return m_BD_knife_1_ZOC;
}

void ModbusTCP_Class::setBD_knife_1_ZOC(const QString &newBD_knife_1_ZOC)
{
    if (m_BD_knife_1_ZOC == newBD_knife_1_ZOC)
        return;
    m_BD_knife_1_ZOC = newBD_knife_1_ZOC;
    emit BD_knife_1_ZOCChanged();
}

QString ModbusTCP_Class::BD_knife_1_T_Acc() const
{
    return m_BD_knife_1_T_Acc;
}

void ModbusTCP_Class::setBD_knife_1_T_Acc(const QString &newBD_knife_1_T_Acc)
{
    if (m_BD_knife_1_T_Acc == newBD_knife_1_T_Acc)
        return;
    m_BD_knife_1_T_Acc = newBD_knife_1_T_Acc;
    emit BD_knife_1_T_AccChanged();
}

QString ModbusTCP_Class::BD_knife_1_T_Dec() const
{
    return m_BD_knife_1_T_Dec;
}

void ModbusTCP_Class::setBD_knife_1_T_Dec(const QString &newBD_knife_1_T_Dec)
{
    if (m_BD_knife_1_T_Dec == newBD_knife_1_T_Dec)
        return;
    m_BD_knife_1_T_Dec = newBD_knife_1_T_Dec;
    emit BD_knife_1_T_DecChanged();
}

QString ModbusTCP_Class::BD_knife_1_PL() const
{
    return m_BD_knife_1_PL;
}

void ModbusTCP_Class::setBD_knife_1_PL(const QString &newBD_knife_1_PL)
{
    if (m_BD_knife_1_PL == newBD_knife_1_PL)
        return;
    m_BD_knife_1_PL = newBD_knife_1_PL;
    emit BD_knife_1_PLChanged();
}

QString ModbusTCP_Class::BD_knife_1_NL() const
{
    return m_BD_knife_1_NL;
}

void ModbusTCP_Class::setBD_knife_1_NL(const QString &newBD_knife_1_NL)
{
    if (m_BD_knife_1_NL == newBD_knife_1_NL)
        return;
    m_BD_knife_1_NL = newBD_knife_1_NL;
    emit BD_knife_1_NLChanged();
}

QString ModbusTCP_Class::BD_knife_1_MLS() const
{
    return m_BD_knife_1_MLS;
}

void ModbusTCP_Class::setBD_knife_1_MLS(const QString &newBD_knife_1_MLS)
{
    if (m_BD_knife_1_MLS == newBD_knife_1_MLS)
        return;
    m_BD_knife_1_MLS = newBD_knife_1_MLS;
    emit BD_knife_1_MLSChanged();
}

QString ModbusTCP_Class::BD_knife_1_MHS() const
{
    return m_BD_knife_1_MHS;
}

void ModbusTCP_Class::setBD_knife_1_MHS(const QString &newBD_knife_1_MHS)
{
    if (m_BD_knife_1_MHS == newBD_knife_1_MHS)
        return;
    m_BD_knife_1_MHS = newBD_knife_1_MHS;
    emit BD_knife_1_MHSChanged();
}

QString ModbusTCP_Class::BD_knife_1_AS() const
{
    return m_BD_knife_1_AS;
}

void ModbusTCP_Class::setBD_knife_1_AS(const QString &newBD_knife_1_AS)
{
    if (m_BD_knife_1_AS == newBD_knife_1_AS)
        return;
    m_BD_knife_1_AS = newBD_knife_1_AS;
    emit BD_knife_1_ASChanged();
}

QString ModbusTCP_Class::BD_knife_1_RTS() const
{
    return m_BD_knife_1_RTS;
}

void ModbusTCP_Class::setBD_knife_1_RTS(const QString &newBD_knife_1_RTS)
{
    if (m_BD_knife_1_RTS == newBD_knife_1_RTS)
        return;
    m_BD_knife_1_RTS = newBD_knife_1_RTS;
    emit BD_knife_1_RTSChanged();
}

QString ModbusTCP_Class::BD_knife_2_PPR() const
{
    return m_BD_knife_2_PPR;
}

void ModbusTCP_Class::setBD_knife_2_PPR(const QString &newBD_knife_2_PPR)
{
    if (m_BD_knife_2_PPR == newBD_knife_2_PPR)
        return;
    m_BD_knife_2_PPR = newBD_knife_2_PPR;
    emit BD_knife_2_PPRChanged();
}

QString ModbusTCP_Class::BD_knife_2_RR() const
{
    return m_BD_knife_2_RR;
}

void ModbusTCP_Class::setBD_knife_2_RR(const QString &newBD_knife_2_RR)
{
    if (m_BD_knife_2_RR == newBD_knife_2_RR)
        return;
    m_BD_knife_2_RR = newBD_knife_2_RR;
    emit BD_knife_2_RRChanged();
}

QString ModbusTCP_Class::BD_knife_2_DPR() const
{
    return m_BD_knife_2_DPR;
}

void ModbusTCP_Class::setBD_knife_2_DPR(const QString &newBD_knife_2_DPR)
{
    if (m_BD_knife_2_DPR == newBD_knife_2_DPR)
        return;
    m_BD_knife_2_DPR = newBD_knife_2_DPR;
    emit BD_knife_2_DPRChanged();
}

QString ModbusTCP_Class::BD_knife_2_ZP() const
{
    return m_BD_knife_2_ZP;
}

void ModbusTCP_Class::setBD_knife_2_ZP(const QString &newBD_knife_2_ZP)
{
    if (m_BD_knife_2_ZP == newBD_knife_2_ZP)
        return;
    m_BD_knife_2_ZP = newBD_knife_2_ZP;
    emit BD_knife_2_ZPChanged();
}

QString ModbusTCP_Class::BD_knife_2_ZOC() const
{
    return m_BD_knife_2_ZOC;
}

void ModbusTCP_Class::setBD_knife_2_ZOC(const QString &newBD_knife_2_ZOC)
{
    if (m_BD_knife_2_ZOC == newBD_knife_2_ZOC)
        return;
    m_BD_knife_2_ZOC = newBD_knife_2_ZOC;
    emit BD_knife_2_ZOCChanged();
}

QString ModbusTCP_Class::BD_knife_2_T_Acc() const
{
    return m_BD_knife_2_T_Acc;
}

void ModbusTCP_Class::setBD_knife_2_T_Acc(const QString &newBD_knife_2_T_Acc)
{
    if (m_BD_knife_2_T_Acc == newBD_knife_2_T_Acc)
        return;
    m_BD_knife_2_T_Acc = newBD_knife_2_T_Acc;
    emit BD_knife_2_T_AccChanged();
}

QString ModbusTCP_Class::BD_knife_2_T_Dec() const
{
    return m_BD_knife_2_T_Dec;
}

void ModbusTCP_Class::setBD_knife_2_T_Dec(const QString &newBD_knife_2_T_Dec)
{
    if (m_BD_knife_2_T_Dec == newBD_knife_2_T_Dec)
        return;
    m_BD_knife_2_T_Dec = newBD_knife_2_T_Dec;
    emit BD_knife_2_T_DecChanged();
}

QString ModbusTCP_Class::BD_knife_2_PL() const
{
    return m_BD_knife_2_PL;
}

void ModbusTCP_Class::setBD_knife_2_PL(const QString &newBD_knife_2_PL)
{
    if (m_BD_knife_2_PL == newBD_knife_2_PL)
        return;
    m_BD_knife_2_PL = newBD_knife_2_PL;
    emit BD_knife_2_PLChanged();
}

QString ModbusTCP_Class::BD_knife_2_NL() const
{
    return m_BD_knife_2_NL;
}

void ModbusTCP_Class::setBD_knife_2_NL(const QString &newBD_knife_2_NL)
{
    if (m_BD_knife_2_NL == newBD_knife_2_NL)
        return;
    m_BD_knife_2_NL = newBD_knife_2_NL;
    emit BD_knife_2_NLChanged();
}

QString ModbusTCP_Class::BD_knife_2_MLS() const
{
    return m_BD_knife_2_MLS;
}

void ModbusTCP_Class::setBD_knife_2_MLS(const QString &newBD_knife_2_MLS)
{
    if (m_BD_knife_2_MLS == newBD_knife_2_MLS)
        return;
    m_BD_knife_2_MLS = newBD_knife_2_MLS;
    emit BD_knife_2_MLSChanged();
}

QString ModbusTCP_Class::BD_knife_2_MHS() const
{
    return m_BD_knife_2_MHS;
}

void ModbusTCP_Class::setBD_knife_2_MHS(const QString &newBD_knife_2_MHS)
{
    if (m_BD_knife_2_MHS == newBD_knife_2_MHS)
        return;
    m_BD_knife_2_MHS = newBD_knife_2_MHS;
    emit BD_knife_2_MHSChanged();
}

QString ModbusTCP_Class::BD_knife_2_AS() const
{
    return m_BD_knife_2_AS;
}

void ModbusTCP_Class::setBD_knife_2_AS(const QString &newBD_knife_2_AS)
{
    if (m_BD_knife_2_AS == newBD_knife_2_AS)
        return;
    m_BD_knife_2_AS = newBD_knife_2_AS;
    emit BD_knife_2_ASChanged();
}

QString ModbusTCP_Class::BD_knife_2_RTS() const
{
    return m_BD_knife_2_RTS;
}

void ModbusTCP_Class::setBD_knife_2_RTS(const QString &newBD_knife_2_RTS)
{
    if (m_BD_knife_2_RTS == newBD_knife_2_RTS)
        return;
    m_BD_knife_2_RTS = newBD_knife_2_RTS;
    emit BD_knife_2_RTSChanged();
}

QString ModbusTCP_Class::Idler_PPR() const
{
    return m_Idler_PPR;
}

void ModbusTCP_Class::setIdler_PPR(const QString &newIdler_PPR)
{
    if (m_Idler_PPR == newIdler_PPR)
        return;
    m_Idler_PPR = newIdler_PPR;
    emit Idler_PPRChanged();
}

QString ModbusTCP_Class::Idler_RR() const
{
    return m_Idler_RR;
}

void ModbusTCP_Class::setIdler_RR(const QString &newIdler_RR)
{
    if (m_Idler_RR == newIdler_RR)
        return;
    m_Idler_RR = newIdler_RR;
    emit Idler_RRChanged();
}

QString ModbusTCP_Class::Idler_DPR() const
{
    return m_Idler_DPR;
}

void ModbusTCP_Class::setIdler_DPR(const QString &newIdler_DPR)
{
    if (m_Idler_DPR == newIdler_DPR)
        return;
    m_Idler_DPR = newIdler_DPR;
    emit Idler_DPRChanged();
}

QString ModbusTCP_Class::Idler_ZP() const
{
    return m_Idler_ZP;
}

void ModbusTCP_Class::setIdler_ZP(const QString &newIdler_ZP)
{
    if (m_Idler_ZP == newIdler_ZP)
        return;
    m_Idler_ZP = newIdler_ZP;
    emit Idler_ZPChanged();
}

QString ModbusTCP_Class::Idler_ZOC() const
{
    return m_Idler_ZOC;
}

void ModbusTCP_Class::setIdler_ZOC(const QString &newIdler_ZOC)
{
    if (m_Idler_ZOC == newIdler_ZOC)
        return;
    m_Idler_ZOC = newIdler_ZOC;
    emit Idler_ZOCChanged();
}

QString ModbusTCP_Class::Idler_T_Acc() const
{
    return m_Idler_T_Acc;
}

void ModbusTCP_Class::setIdler_T_Acc(const QString &newIdler_T_Acc)
{
    if (m_Idler_T_Acc == newIdler_T_Acc)
        return;
    m_Idler_T_Acc = newIdler_T_Acc;
    emit Idler_T_AccChanged();
}

QString ModbusTCP_Class::Idler_T_Dec() const
{
    return m_Idler_T_Dec;
}

void ModbusTCP_Class::setIdler_T_Dec(const QString &newIdler_T_Dec)
{
    if (m_Idler_T_Dec == newIdler_T_Dec)
        return;
    m_Idler_T_Dec = newIdler_T_Dec;
    emit Idler_T_DecChanged();
}

QString ModbusTCP_Class::Idler_PL() const
{
    return m_Idler_PL;
}

void ModbusTCP_Class::setIdler_PL(const QString &newIdler_PL)
{
    if (m_Idler_PL == newIdler_PL)
        return;
    m_Idler_PL = newIdler_PL;
    emit Idler_PLChanged();
}

QString ModbusTCP_Class::Idler_NL() const
{
    return m_Idler_NL;
}

void ModbusTCP_Class::setIdler_NL(const QString &newIdler_NL)
{
    if (m_Idler_NL == newIdler_NL)
        return;
    m_Idler_NL = newIdler_NL;
    emit Idler_NLChanged();
}

QString ModbusTCP_Class::Idler_MLS() const
{
    return m_Idler_MLS;
}

void ModbusTCP_Class::setIdler_MLS(const QString &newIdler_MLS)
{
    if (m_Idler_MLS == newIdler_MLS)
        return;
    m_Idler_MLS = newIdler_MLS;
    emit Idler_MLSChanged();
}

QString ModbusTCP_Class::Idler_MHS() const
{
    return m_Idler_MHS;
}

void ModbusTCP_Class::setIdler_MHS(const QString &newIdler_MHS)
{
    if (m_Idler_MHS == newIdler_MHS)
        return;
    m_Idler_MHS = newIdler_MHS;
    emit Idler_MHSChanged();
}

QString ModbusTCP_Class::Idler_AS() const
{
    return m_Idler_AS;
}

void ModbusTCP_Class::setIdler_AS(const QString &newIdler_AS)
{
    if (m_Idler_AS == newIdler_AS)
        return;
    m_Idler_AS = newIdler_AS;
    emit Idler_ASChanged();
}

QString ModbusTCP_Class::Idler_RTS() const
{
    return m_Idler_RTS;
}

void ModbusTCP_Class::setIdler_RTS(const QString &newIdler_RTS)
{
    if (m_Idler_RTS == newIdler_RTS)
        return;
    m_Idler_RTS = newIdler_RTS;
    emit Idler_RTSChanged();
}

QString ModbusTCP_Class::knife_Max_Distance() const
{
    return m_knife_Max_Distance;
}

void ModbusTCP_Class::setknife_Max_Distance(const QString &newknife_Max_Distance)
{
    if (m_knife_Max_Distance == newknife_Max_Distance)
        return;
    m_knife_Max_Distance = newknife_Max_Distance;
    emit knife_Max_DistanceChanged();
}

QString ModbusTCP_Class::knife_Min_Distance() const
{
    return m_knife_Min_Distance;
}

void ModbusTCP_Class::setknife_Min_Distance(const QString &newknife_Min_Distance)
{
    if (m_knife_Min_Distance == newknife_Min_Distance)
        return;
    m_knife_Min_Distance = newknife_Min_Distance;
    emit knife_Min_DistanceChanged();
}

int ModbusTCP_Class::F_1_Location_Forbid() const
{
    return m_F_1_Location_Forbid;
}

void ModbusTCP_Class::setF_1_Location_Forbid(int newF_1_Location_Forbid)
{
    if (m_F_1_Location_Forbid == newF_1_Location_Forbid)
        return;
    m_F_1_Location_Forbid = newF_1_Location_Forbid;
    emit F_1_Location_ForbidChanged();
}

int ModbusTCP_Class::F_2_Location_Forbid() const
{
    return m_F_2_Location_Forbid;
}

void ModbusTCP_Class::setF_2_Location_Forbid(int newF_2_Location_Forbid)
{
    if (m_F_2_Location_Forbid == newF_2_Location_Forbid)
        return;
    m_F_2_Location_Forbid = newF_2_Location_Forbid;
    emit F_2_Location_ForbidChanged();
}

int ModbusTCP_Class::B_1_Location_Forbid() const
{
    return m_B_1_Location_Forbid;
}

void ModbusTCP_Class::setB_1_Location_Forbid(int newB_1_Location_Forbid)
{
    if (m_B_1_Location_Forbid == newB_1_Location_Forbid)
        return;
    m_B_1_Location_Forbid = newB_1_Location_Forbid;
    emit B_1_Location_ForbidChanged();
}

int ModbusTCP_Class::B_2_Location_Forbid() const
{
    return m_B_2_Location_Forbid;
}

void ModbusTCP_Class::setB_2_Location_Forbid(int newB_2_Location_Forbid)
{
    if (m_B_2_Location_Forbid == newB_2_Location_Forbid)
        return;
    m_B_2_Location_Forbid = newB_2_Location_Forbid;
    emit B_2_Location_ForbidChanged();
}

int ModbusTCP_Class::FU1_location_state() const
{
    return m_FU1_location_state;
}

void ModbusTCP_Class::setFU1_location_state(int newFU1_location_state)
{
    if (m_FU1_location_state == newFU1_location_state)
        return;
    m_FU1_location_state = newFU1_location_state;
    emit FU1_location_stateChanged();
}

int ModbusTCP_Class::FU2_location_state() const
{
    return m_FU2_location_state;
}

void ModbusTCP_Class::setFU2_location_state(int newFU2_location_state)
{
    if (m_FU2_location_state == newFU2_location_state)
        return;
    m_FU2_location_state = newFU2_location_state;
    emit FU2_location_stateChanged();
}

int ModbusTCP_Class::FU1_AE_location_state() const
{
    return m_FU1_AE_location_state;
}

void ModbusTCP_Class::setFU1_AE_location_state(int newFU1_AE_location_state)
{
    if (m_FU1_AE_location_state == newFU1_AE_location_state)
        return;
    m_FU1_AE_location_state = newFU1_AE_location_state;
    emit FU1_AE_location_stateChanged();
}

int ModbusTCP_Class::FU2_AE_location_state() const
{
    return m_FU2_AE_location_state;
}

void ModbusTCP_Class::setFU2_AE_location_state(int newFU2_AE_location_state)
{
    if (m_FU2_AE_location_state == newFU2_AE_location_state)
        return;
    m_FU2_AE_location_state = newFU2_AE_location_state;
    emit FU2_AE_location_stateChanged();
}

int ModbusTCP_Class::BU1_location_state() const
{
    return m_BU1_location_state;
}

void ModbusTCP_Class::setBU1_location_state(int newBU1_location_state)
{
    if (m_BU1_location_state == newBU1_location_state)
        return;
    m_BU1_location_state = newBU1_location_state;
    emit BU1_location_stateChanged();
}

int ModbusTCP_Class::BU2_location_state() const
{
    return m_BU2_location_state;
}

void ModbusTCP_Class::setBU2_location_state(int newBU2_location_state)
{
    if (m_BU2_location_state == newBU2_location_state)
        return;
    m_BU2_location_state = newBU2_location_state;
    emit BU2_location_stateChanged();
}

int ModbusTCP_Class::BU1_AE_location_state() const
{
    return m_BU1_AE_location_state;
}

void ModbusTCP_Class::setBU1_AE_location_state(int newBU1_AE_location_state)
{
    if (m_BU1_AE_location_state == newBU1_AE_location_state)
        return;
    m_BU1_AE_location_state = newBU1_AE_location_state;
    emit BU1_AE_location_stateChanged();
}

int ModbusTCP_Class::BU2_AE_location_state() const
{
    return m_BU2_AE_location_state;
}

void ModbusTCP_Class::setBU2_AE_location_state(int newBU2_AE_location_state)
{
    if (m_BU2_AE_location_state == newBU2_AE_location_state)
        return;
    m_BU2_AE_location_state = newBU2_AE_location_state;
    emit BU2_AE_location_stateChanged();
}

int ModbusTCP_Class::FD1_location_state() const
{
    return m_FD1_location_state;
}

void ModbusTCP_Class::setFD1_location_state(int newFD1_location_state)
{
    if (m_FD1_location_state == newFD1_location_state)
        return;
    m_FD1_location_state = newFD1_location_state;
    emit FD1_location_stateChanged();
}

int ModbusTCP_Class::FD2_location_state() const
{
    return m_FD2_location_state;
}

void ModbusTCP_Class::setFD2_location_state(int newFD2_location_state)
{
    if (m_FD2_location_state == newFD2_location_state)
        return;
    m_FD2_location_state = newFD2_location_state;
    emit FD2_location_stateChanged();
}

int ModbusTCP_Class::BD1_location_state() const
{
    return m_BD1_location_state;
}

void ModbusTCP_Class::setBD1_location_state(int newBD1_location_state)
{
    if (m_BD1_location_state == newBD1_location_state)
        return;
    m_BD1_location_state = newBD1_location_state;
    emit BD1_location_stateChanged();
}

int ModbusTCP_Class::BD2_location_state() const
{
    return m_BD2_location_state;
}

void ModbusTCP_Class::setBD2_location_state(int newBD2_location_state)
{
    if (m_BD2_location_state == newBD2_location_state)
        return;
    m_BD2_location_state = newBD2_location_state;
    emit BD2_location_stateChanged();
}

int ModbusTCP_Class::Entry1_location_state() const
{
    return m_Entry1_location_state;
}

void ModbusTCP_Class::setEntry1_location_state(int newEntry1_location_state)
{
    if (m_Entry1_location_state == newEntry1_location_state)
        return;
    m_Entry1_location_state = newEntry1_location_state;
    emit Entry1_location_stateChanged();
}

int ModbusTCP_Class::Entry2_location_state() const
{
    return m_Entry2_location_state;
}

void ModbusTCP_Class::setEntry2_location_state(int newEntry2_location_state)
{
    if (m_Entry2_location_state == newEntry2_location_state)
        return;
    m_Entry2_location_state = newEntry2_location_state;
    emit Entry2_location_stateChanged();
}

int ModbusTCP_Class::Idler_location_state() const
{
    return m_Idler_location_state;
}

void ModbusTCP_Class::setIdler_location_state(int newIdler_location_state)
{
    if (m_Idler_location_state == newIdler_location_state)
        return;
    m_Idler_location_state = newIdler_location_state;
    emit Idler_location_stateChanged();
}

int ModbusTCP_Class::FU1_warning_state() const
{
    return m_FU1_warning_state;
}

void ModbusTCP_Class::setFU1_warning_state(int newFU1_warning_state)
{
    if (m_FU1_warning_state == newFU1_warning_state)
        return;
    m_FU1_warning_state = newFU1_warning_state;
    emit FU1_warning_stateChanged();
}

int ModbusTCP_Class::FU2_warning_state() const
{
    return m_FU2_warning_state;
}

void ModbusTCP_Class::setFU2_warning_state(int newFU2_warning_state)
{
    if (m_FU2_warning_state == newFU2_warning_state)
        return;
    m_FU2_warning_state = newFU2_warning_state;
    emit FU2_warning_stateChanged();
}

int ModbusTCP_Class::FU1_AE_warning_state() const
{
    return m_FU1_AE_warning_state;
}

void ModbusTCP_Class::setFU1_AE_warning_state(int newFU1_AE_warning_state)
{
    if (m_FU1_AE_warning_state == newFU1_AE_warning_state)
        return;
    m_FU1_AE_warning_state = newFU1_AE_warning_state;
    emit FU1_AE_warning_stateChanged();
}

int ModbusTCP_Class::FU2_AE_warning_state() const
{
    return m_FU2_AE_warning_state;
}

void ModbusTCP_Class::setFU2_AE_warning_state(int newFU2_AE_warning_state)
{
    if (m_FU2_AE_warning_state == newFU2_AE_warning_state)
        return;
    m_FU2_AE_warning_state = newFU2_AE_warning_state;
    emit FU2_AE_warning_stateChanged();
}

int ModbusTCP_Class::BU1_warning_state() const
{
    return m_BU1_warning_state;
}

void ModbusTCP_Class::setBU1_warning_state(int newBU1_warning_state)
{
    if (m_BU1_warning_state == newBU1_warning_state)
        return;
    m_BU1_warning_state = newBU1_warning_state;
    emit BU1_warning_stateChanged();
}

int ModbusTCP_Class::BU2_warning_state() const
{
    return m_BU2_warning_state;
}

void ModbusTCP_Class::setBU2_warning_state(int newBU2_warning_state)
{
    if (m_BU2_warning_state == newBU2_warning_state)
        return;
    m_BU2_warning_state = newBU2_warning_state;
    emit BU2_warning_stateChanged();
}

int ModbusTCP_Class::BU1_AE_warning_state() const
{
    return m_BU1_AE_warning_state;
}

void ModbusTCP_Class::setBU1_AE_warning_state(int newBU1_AE_warning_state)
{
    if (m_BU1_AE_warning_state == newBU1_AE_warning_state)
        return;
    m_BU1_AE_warning_state = newBU1_AE_warning_state;
    emit BU1_AE_warning_stateChanged();
}

int ModbusTCP_Class::BU2_AE_warning_state() const
{
    return m_BU2_AE_warning_state;
}

void ModbusTCP_Class::setBU2_AE_warning_state(int newBU2_AE_warning_state)
{
    if (m_BU2_AE_warning_state == newBU2_AE_warning_state)
        return;
    m_BU2_AE_warning_state = newBU2_AE_warning_state;
    emit BU2_AE_warning_stateChanged();
}

int ModbusTCP_Class::FD1_warning_state() const
{
    return m_FD1_warning_state;
}

void ModbusTCP_Class::setFD1_warning_state(int newFD1_warning_state)
{
    if (m_FD1_warning_state == newFD1_warning_state)
        return;
    m_FD1_warning_state = newFD1_warning_state;
    emit FD1_warning_stateChanged();
}

int ModbusTCP_Class::FD2_warning_state() const
{
    return m_FD2_warning_state;
}

void ModbusTCP_Class::setFD2_warning_state(int newFD2_warning_state)
{
    if (m_FD2_warning_state == newFD2_warning_state)
        return;
    m_FD2_warning_state = newFD2_warning_state;
    emit FD2_warning_stateChanged();
}

int ModbusTCP_Class::BD1_warning_state() const
{
    return m_BD1_warning_state;
}

void ModbusTCP_Class::setBD1_warning_state(int newBD1_warning_state)
{
    if (m_BD1_warning_state == newBD1_warning_state)
        return;
    m_BD1_warning_state = newBD1_warning_state;
    emit BD1_warning_stateChanged();
}

int ModbusTCP_Class::BD2_warning_state() const
{
    return m_BD2_warning_state;
}

void ModbusTCP_Class::setBD2_warning_state(int newBD2_warning_state)
{
    if (m_BD2_warning_state == newBD2_warning_state)
        return;
    m_BD2_warning_state = newBD2_warning_state;
    emit BD2_warning_stateChanged();
}

int ModbusTCP_Class::Entry1_warning_state() const
{
    return m_Entry1_warning_state;
}

void ModbusTCP_Class::setEntry1_warning_state(int newEntry1_warning_state)
{
    if (m_Entry1_warning_state == newEntry1_warning_state)
        return;
    m_Entry1_warning_state = newEntry1_warning_state;
    emit Entry1_warning_stateChanged();
}

int ModbusTCP_Class::Entry2_warning_state() const
{
    return m_Entry2_warning_state;
}

void ModbusTCP_Class::setEntry2_warning_state(int newEntry2_warning_state)
{
    if (m_Entry2_warning_state == newEntry2_warning_state)
        return;
    m_Entry2_warning_state = newEntry2_warning_state;
    emit Entry2_warning_stateChanged();
}

int ModbusTCP_Class::Idler_warning_state() const
{
    return m_Idler_warning_state;
}

void ModbusTCP_Class::setIdler_warning_state(int newIdler_warning_state)
{
    if (m_Idler_warning_state == newIdler_warning_state)
        return;
    m_Idler_warning_state = newIdler_warning_state;
    emit Idler_warning_stateChanged();
}

int ModbusTCP_Class::FU1_Z_limit_state() const
{
    return m_FU1_Z_limit_state;
}

void ModbusTCP_Class::setFU1_Z_limit_state(int newFU1_Z_limit_state)
{
    if (m_FU1_Z_limit_state == newFU1_Z_limit_state)
        return;
    m_FU1_Z_limit_state = newFU1_Z_limit_state;
    emit FU1_Z_limit_stateChanged();
}

int ModbusTCP_Class::FU2_Z_limit_state() const
{
    return m_FU2_Z_limit_state;
}

void ModbusTCP_Class::setFU2_Z_limit_state(int newFU2_Z_limit_state)
{
    if (m_FU2_Z_limit_state == newFU2_Z_limit_state)
        return;
    m_FU2_Z_limit_state = newFU2_Z_limit_state;
    emit FU2_Z_limit_stateChanged();
}

int ModbusTCP_Class::FU1_AE_Z_limit_state() const
{
    return m_FU1_AE_Z_limit_state;
}

void ModbusTCP_Class::setFU1_AE_Z_limit_state(int newFU1_AE_Z_limit_state)
{
    if (m_FU1_AE_Z_limit_state == newFU1_AE_Z_limit_state)
        return;
    m_FU1_AE_Z_limit_state = newFU1_AE_Z_limit_state;
    emit FU1_AE_Z_limit_stateChanged();
}

int ModbusTCP_Class::FU2_AE_Z_limit_state() const
{
    return m_FU2_AE_Z_limit_state;
}

void ModbusTCP_Class::setFU2_AE_Z_limit_state(int newFU2_AE_Z_limit_state)
{
    if (m_FU2_AE_Z_limit_state == newFU2_AE_Z_limit_state)
        return;
    m_FU2_AE_Z_limit_state = newFU2_AE_Z_limit_state;
    emit FU2_AE_Z_limit_stateChanged();
}

int ModbusTCP_Class::BU1_Z_limit_state() const
{
    return m_BU1_Z_limit_state;
}

void ModbusTCP_Class::setBU1_Z_limit_state(int newBU1_Z_limit_state)
{
    if (m_BU1_Z_limit_state == newBU1_Z_limit_state)
        return;
    m_BU1_Z_limit_state = newBU1_Z_limit_state;
    emit BU1_Z_limit_stateChanged();
}

int ModbusTCP_Class::BU2_Z_limit_state() const
{
    return m_BU2_Z_limit_state;
}

void ModbusTCP_Class::setBU2_Z_limit_state(int newBU2_Z_limit_state)
{
    if (m_BU2_Z_limit_state == newBU2_Z_limit_state)
        return;
    m_BU2_Z_limit_state = newBU2_Z_limit_state;
    emit BU2_Z_limit_stateChanged();
}

int ModbusTCP_Class::BU1_AE_Z_limit_state() const
{
    return m_BU1_AE_Z_limit_state;
}

void ModbusTCP_Class::setBU1_AE_Z_limit_state(int newBU1_AE_Z_limit_state)
{
    if (m_BU1_AE_Z_limit_state == newBU1_AE_Z_limit_state)
        return;
    m_BU1_AE_Z_limit_state = newBU1_AE_Z_limit_state;
    emit BU1_AE_Z_limit_stateChanged();
}

int ModbusTCP_Class::BU2_AE_Z_limit_state() const
{
    return m_BU2_AE_Z_limit_state;
}

void ModbusTCP_Class::setBU2_AE_Z_limit_state(int newBU2_AE_Z_limit_state)
{
    if (m_BU2_AE_Z_limit_state == newBU2_AE_Z_limit_state)
        return;
    m_BU2_AE_Z_limit_state = newBU2_AE_Z_limit_state;
    emit BU2_AE_Z_limit_stateChanged();
}

int ModbusTCP_Class::FD1_Z_limit_state() const
{
    return m_FD1_Z_limit_state;
}

void ModbusTCP_Class::setFD1_Z_limit_state(int newFD1_Z_limit_state)
{
    if (m_FD1_Z_limit_state == newFD1_Z_limit_state)
        return;
    m_FD1_Z_limit_state = newFD1_Z_limit_state;
    emit FD1_Z_limit_stateChanged();
}

int ModbusTCP_Class::FD2_Z_limit_state() const
{
    return m_FD2_Z_limit_state;
}

void ModbusTCP_Class::setFD2_Z_limit_state(int newFD2_Z_limit_state)
{
    if (m_FD2_Z_limit_state == newFD2_Z_limit_state)
        return;
    m_FD2_Z_limit_state = newFD2_Z_limit_state;
    emit FD2_Z_limit_stateChanged();
}

int ModbusTCP_Class::BD1_Z_limit_state() const
{
    return m_BD1_Z_limit_state;
}

void ModbusTCP_Class::setBD1_Z_limit_state(int newBD1_Z_limit_state)
{
    if (m_BD1_Z_limit_state == newBD1_Z_limit_state)
        return;
    m_BD1_Z_limit_state = newBD1_Z_limit_state;
    emit BD1_Z_limit_stateChanged();
}

int ModbusTCP_Class::BD2_Z_limit_state() const
{
    return m_BD2_Z_limit_state;
}

void ModbusTCP_Class::setBD2_Z_limit_state(int newBD2_Z_limit_state)
{
    if (m_BD2_Z_limit_state == newBD2_Z_limit_state)
        return;
    m_BD2_Z_limit_state = newBD2_Z_limit_state;
    emit BD2_Z_limit_stateChanged();
}

int ModbusTCP_Class::Entry1_Z_limit_state() const
{
    return m_Entry1_Z_limit_state;
}

void ModbusTCP_Class::setEntry1_Z_limit_state(int newEntry1_Z_limit_state)
{
    if (m_Entry1_Z_limit_state == newEntry1_Z_limit_state)
        return;
    m_Entry1_Z_limit_state = newEntry1_Z_limit_state;
    emit Entry1_Z_limit_stateChanged();
}

int ModbusTCP_Class::Entry2_Z_limit_state() const
{
    return m_Entry2_Z_limit_state;
}

void ModbusTCP_Class::setEntry2_Z_limit_state(int newEntry2_Z_limit_state)
{
    if (m_Entry2_Z_limit_state == newEntry2_Z_limit_state)
        return;
    m_Entry2_Z_limit_state = newEntry2_Z_limit_state;
    emit Entry2_Z_limit_stateChanged();
}

int ModbusTCP_Class::Idler_Z_limit_state() const
{
    return m_Idler_Z_limit_state;
}

void ModbusTCP_Class::setIdler_Z_limit_state(int newIdler_Z_limit_state)
{
    if (m_Idler_Z_limit_state == newIdler_Z_limit_state)
        return;
    m_Idler_Z_limit_state = newIdler_Z_limit_state;
    emit Idler_Z_limit_stateChanged();
}

int ModbusTCP_Class::FU1_F_limit_state() const
{
    return m_FU1_F_limit_state;
}

void ModbusTCP_Class::setFU1_F_limit_state(int newFU1_F_limit_state)
{
    if (m_FU1_F_limit_state == newFU1_F_limit_state)
        return;
    m_FU1_F_limit_state = newFU1_F_limit_state;
    emit FU1_F_limit_stateChanged();
}

int ModbusTCP_Class::FU2_F_limit_state() const
{
    return m_FU2_F_limit_state;
}

void ModbusTCP_Class::setFU2_F_limit_state(int newFU2_F_limit_state)
{
    if (m_FU2_F_limit_state == newFU2_F_limit_state)
        return;
    m_FU2_F_limit_state = newFU2_F_limit_state;
    emit FU2_F_limit_stateChanged();
}

int ModbusTCP_Class::FU1_AE_F_limit_state() const
{
    return m_FU1_AE_F_limit_state;
}

void ModbusTCP_Class::setFU1_AE_F_limit_state(int newFU1_AE_F_limit_state)
{
    if (m_FU1_AE_F_limit_state == newFU1_AE_F_limit_state)
        return;
    m_FU1_AE_F_limit_state = newFU1_AE_F_limit_state;
    emit FU1_AE_F_limit_stateChanged();
}

int ModbusTCP_Class::FU2_AE_F_limit_state() const
{
    return m_FU2_AE_F_limit_state;
}

void ModbusTCP_Class::setFU2_AE_F_limit_state(int newFU2_AE_F_limit_state)
{
    if (m_FU2_AE_F_limit_state == newFU2_AE_F_limit_state)
        return;
    m_FU2_AE_F_limit_state = newFU2_AE_F_limit_state;
    emit FU2_AE_F_limit_stateChanged();
}

int ModbusTCP_Class::BU1_F_limit_state() const
{
    return m_BU1_F_limit_state;
}

void ModbusTCP_Class::setBU1_F_limit_state(int newBU1_F_limit_state)
{
    if (m_BU1_F_limit_state == newBU1_F_limit_state)
        return;
    m_BU1_F_limit_state = newBU1_F_limit_state;
    emit BU1_F_limit_stateChanged();
}

int ModbusTCP_Class::BU2_F_limit_state() const
{
    return m_BU2_F_limit_state;
}

void ModbusTCP_Class::setBU2_F_limit_state(int newBU2_F_limit_state)
{
    if (m_BU2_F_limit_state == newBU2_F_limit_state)
        return;
    m_BU2_F_limit_state = newBU2_F_limit_state;
    emit BU2_F_limit_stateChanged();
}

int ModbusTCP_Class::BU1_AE_F_limit_state() const
{
    return m_BU1_AE_F_limit_state;
}

void ModbusTCP_Class::setBU1_AE_F_limit_state(int newBU1_AE_F_limit_state)
{
    if (m_BU1_AE_F_limit_state == newBU1_AE_F_limit_state)
        return;
    m_BU1_AE_F_limit_state = newBU1_AE_F_limit_state;
    emit BU1_AE_F_limit_stateChanged();
}

int ModbusTCP_Class::BU2_AE_F_limit_state() const
{
    return m_BU2_AE_F_limit_state;
}

void ModbusTCP_Class::setBU2_AE_F_limit_state(int newBU2_AE_F_limit_state)
{
    if (m_BU2_AE_F_limit_state == newBU2_AE_F_limit_state)
        return;
    m_BU2_AE_F_limit_state = newBU2_AE_F_limit_state;
    emit BU2_AE_F_limit_stateChanged();
}

int ModbusTCP_Class::FD1_F_limit_state() const
{
    return m_FD1_F_limit_state;
}

void ModbusTCP_Class::setFD1_F_limit_state(int newFD1_F_limit_state)
{
    if (m_FD1_F_limit_state == newFD1_F_limit_state)
        return;
    m_FD1_F_limit_state = newFD1_F_limit_state;
    emit FD1_F_limit_stateChanged();
}

int ModbusTCP_Class::FD2_F_limit_state() const
{
    return m_FD2_F_limit_state;
}

void ModbusTCP_Class::setFD2_F_limit_state(int newFD2_F_limit_state)
{
    if (m_FD2_F_limit_state == newFD2_F_limit_state)
        return;
    m_FD2_F_limit_state = newFD2_F_limit_state;
    emit FD2_F_limit_stateChanged();
}

int ModbusTCP_Class::BD1_F_limit_state() const
{
    return m_BD1_F_limit_state;
}

void ModbusTCP_Class::setBD1_F_limit_state(int newBD1_F_limit_state)
{
    if (m_BD1_F_limit_state == newBD1_F_limit_state)
        return;
    m_BD1_F_limit_state = newBD1_F_limit_state;
    emit BD1_F_limit_stateChanged();
}

int ModbusTCP_Class::BD2_F_limit_state() const
{
    return m_BD2_F_limit_state;
}

void ModbusTCP_Class::setBD2_F_limit_state(int newBD2_F_limit_state)
{
    if (m_BD2_F_limit_state == newBD2_F_limit_state)
        return;
    m_BD2_F_limit_state = newBD2_F_limit_state;
    emit BD2_F_limit_stateChanged();
}

int ModbusTCP_Class::Entry1_F_limit_state() const
{
    return m_Entry1_F_limit_state;
}

void ModbusTCP_Class::setEntry1_F_limit_state(int newEntry1_F_limit_state)
{
    if (m_Entry1_F_limit_state == newEntry1_F_limit_state)
        return;
    m_Entry1_F_limit_state = newEntry1_F_limit_state;
    emit Entry1_F_limit_stateChanged();
}

int ModbusTCP_Class::Entry2_F_limit_state() const
{
    return m_Entry2_F_limit_state;
}

void ModbusTCP_Class::setEntry2_F_limit_state(int newEntry2_F_limit_state)
{
    if (m_Entry2_F_limit_state == newEntry2_F_limit_state)
        return;
    m_Entry2_F_limit_state = newEntry2_F_limit_state;
    emit Entry2_F_limit_stateChanged();
}

int ModbusTCP_Class::Idler_F_limit_state() const
{
    return m_Idler_F_limit_state;
}

void ModbusTCP_Class::setIdler_F_limit_state(int newIdler_F_limit_state)
{
    if (m_Idler_F_limit_state == newIdler_F_limit_state)
        return;
    m_Idler_F_limit_state = newIdler_F_limit_state;
    emit Idler_F_limit_stateChanged();
}

bool ModbusTCP_Class::Stop_Signal() const
{
    return m_Stop_Signal;
}

void ModbusTCP_Class::setStop_Signal(bool newStop_Signal)
{
    if (m_Stop_Signal == newStop_Signal)
        return;
    m_Stop_Signal = newStop_Signal;
    emit Stop_SignalChanged();
}
